From 320ed6c2389139334312f18449bee8f5295ad220 Mon Sep 17 00:00:00 2001 From: Yuan Liu Date: Fri, 28 Feb 2020 23:02:12 +0800 Subject: [PATCH] hv: refine init_one_dev_config The init_one_dev_config is used to initialize a acrn_vm_pci_dev_config SRIOV needs a explicit acrn_vm_pci_dev_config to create a VF vdev,so refine it to return acrn_vm_pci_dev_config. Tracked-On: #4433 Signed-off-by: Yuan Liu Acked-by: Eddie Dong --- hypervisor/arch/x86/configs/pci_dev.c | 15 ++++++++++++--- hypervisor/include/arch/x86/pci_dev.h | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/hypervisor/arch/x86/configs/pci_dev.c b/hypervisor/arch/x86/configs/pci_dev.c index efb2d75c1..94401dc4e 100644 --- a/hypervisor/arch/x86/configs/pci_dev.c +++ b/hypervisor/arch/x86/configs/pci_dev.c @@ -54,13 +54,21 @@ static bool is_allocated_to_prelaunched_vm(struct pci_pdev *pdev) /* - * @pre: pdev != NULL + * @brief Initialize a acrn_vm_pci_dev_config structure + * + * Initialize a acrn_vm_pci_dev_config structure with a specified the pdev structure. + * A acrn_vm_pci_dev_config is used to store a PCI device configuration for a VM. The + * caller of the function init_one_dev_config should guarantee execution atomically. + * + * @pre pdev != NULL + * + * @return If there's a successfully initialized acrn_vm_pci_dev_config return it, otherwise return NULL; */ -void init_one_dev_config(struct pci_pdev *pdev) +struct acrn_vm_pci_dev_config *init_one_dev_config(struct pci_pdev *pdev) { uint16_t vmid; struct acrn_vm_config *vm_config; - struct acrn_vm_pci_dev_config *dev_config; + struct acrn_vm_pci_dev_config *dev_config = NULL; if (!is_allocated_to_prelaunched_vm(pdev)) { for (vmid = 0U; vmid < CONFIG_MAX_VM_NUM; vmid++) { @@ -77,4 +85,5 @@ void init_one_dev_config(struct pci_pdev *pdev) vm_config->pci_dev_num++; } } + return dev_config; } diff --git a/hypervisor/include/arch/x86/pci_dev.h b/hypervisor/include/arch/x86/pci_dev.h index 24f588c9d..ce410c1ad 100644 --- a/hypervisor/include/arch/x86/pci_dev.h +++ b/hypervisor/include/arch/x86/pci_dev.h @@ -14,6 +14,6 @@ extern struct acrn_vm_pci_dev_config sos_pci_devs[CONFIG_MAX_PCI_DEV_NUM]; struct pci_pdev; -void init_one_dev_config(struct pci_pdev *pdev); +struct acrn_vm_pci_dev_config *init_one_dev_config(struct pci_pdev *pdev); #endif /* PCI_DEV_H_ */