mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2026-01-05 23:57:10 +00:00
hv: dm: Use new virtual device management ioctls
IC_ADD_HV_VDEV -> ACRN_IOCTL_CREATE_VDEV IC_REMOVE_HV_VDEV -> ACRN_IOCTL_DESTROY_VDEV struct acrn_emul_dev -> struct acrn_vdev Also, move struct acrn_vdev to acrn_common.h as this structure is used by both DM and HV. Tracked-On: #6282 Signed-off-by: Shuo A Liu <shuo.a.liu@intel.com>
This commit is contained in:
@@ -340,7 +340,7 @@ int32_t hcall_deassign_mmiodev(struct acrn_vcpu *vcpu, struct acrn_vm *target_vm
|
||||
* @param target_vm Pointer to target VM data structure
|
||||
* @param param1 not used
|
||||
* @param param2 guest physical address. This gpa points to data structure of
|
||||
* acrn_emul_dev including information about PCI or legacy devices
|
||||
* acrn_vdev including information about PCI or legacy devices
|
||||
*
|
||||
* @pre is_sos_vm(vcpu->vm)
|
||||
* @return 0 on success, non-zero on error.
|
||||
@@ -354,7 +354,7 @@ int32_t hcall_add_vdev(struct acrn_vcpu *vcpu, struct acrn_vm *target_vm, uint64
|
||||
* @param target_vm Pointer to target VM data structure
|
||||
* @param param1 not used
|
||||
* @param param2 guest physical address. This gpa points to data structure of
|
||||
* acrn_emul_dev including information about PCI or legacy devices
|
||||
* acrn_vdev including information about PCI or legacy devices
|
||||
*
|
||||
* @pre is_sos_vm(vcpu->vm)
|
||||
* @return 0 on success, non-zero on error.
|
||||
|
||||
@@ -37,7 +37,7 @@ extern const struct pci_vdev_ops vpci_ivshmem_ops;
|
||||
*/
|
||||
void init_ivshmem_shared_memory(void);
|
||||
|
||||
int32_t create_ivshmem_vdev(struct acrn_vm *vm, struct acrn_emul_dev *dev);
|
||||
int32_t create_ivshmem_vdev(struct acrn_vm *vm, struct acrn_vdev *dev);
|
||||
int32_t destroy_ivshmem_vdev(struct pci_vdev *vdev);
|
||||
#endif /* CONFIG_IVSHMEM_ENABLED */
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
extern const struct pci_vdev_ops vmcs9900_ops;
|
||||
void trigger_vmcs9900_msix(struct pci_vdev *vdev);
|
||||
int32_t create_vmcs9900_vdev(struct acrn_vm *vm, struct acrn_emul_dev *dev);
|
||||
int32_t create_vmcs9900_vdev(struct acrn_vm *vm, struct acrn_vdev *dev);
|
||||
int32_t destroy_vmcs9900_vdev(struct pci_vdev *vdev);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
extern const struct pci_vdev_ops vrp_ops;
|
||||
|
||||
int32_t create_vrp(struct acrn_vm *vm, struct acrn_emul_dev *dev);
|
||||
int32_t create_vrp(struct acrn_vm *vm, struct acrn_vdev *dev);
|
||||
int32_t destroy_vrp(struct pci_vdev *vdev);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -750,6 +750,42 @@ struct acrn_mmiodev {
|
||||
uint64_t size;
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
/**
|
||||
* @brief Info to create or destroy a virtual PCI or legacy device for a VM
|
||||
*
|
||||
* the parameter for HC_CREATE_VDEV or HC_DESTROY_VDEV hypercall
|
||||
*/
|
||||
struct acrn_vdev {
|
||||
/*
|
||||
* the identifier of the device, the low 32 bits represent the vendor
|
||||
* id and device id of PCI device and the high 32 bits represent the
|
||||
* device number of the legacy device
|
||||
*/
|
||||
union {
|
||||
uint64_t value;
|
||||
struct {
|
||||
uint16_t vendor;
|
||||
uint16_t device;
|
||||
uint32_t legacy_id;
|
||||
} fields;
|
||||
} id;
|
||||
|
||||
/*
|
||||
* the slot of the device, if the device is a PCI device, the slot
|
||||
* represents BDF, otherwise it represents legacy device slot number
|
||||
*/
|
||||
uint64_t slot;
|
||||
|
||||
/** the IO resource address of the device, initialized by ACRN-DM. */
|
||||
uint32_t io_addr[ACRN_PCI_NUM_BARS];
|
||||
|
||||
/** the IO resource size of the device, initialized by ACRN-DM. */
|
||||
uint32_t io_size[ACRN_PCI_NUM_BARS];
|
||||
|
||||
/** the options for the virtual device, initialized by ACRN-DM. */
|
||||
uint8_t args[128];
|
||||
};
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -271,49 +271,6 @@ struct hc_ptdev_irq {
|
||||
|
||||
} __aligned(8);
|
||||
|
||||
/**
|
||||
* @brief Info to create or destroy a virtual PCI or legacy device for a VM
|
||||
*
|
||||
* the parameter for HC_ADD_VDEV or HC_REMOVE_VDEV hypercall
|
||||
*/
|
||||
struct acrn_emul_dev {
|
||||
/*
|
||||
* the identifier of the device, the low 32 bits represent the vendor
|
||||
* id and device id of PCI device and the high 32 bits represent the
|
||||
* device number of the legacy device
|
||||
*/
|
||||
union dev_id_info {
|
||||
uint64_t value;
|
||||
struct fields_info {
|
||||
uint16_t vendor_id;
|
||||
uint16_t device_id;
|
||||
uint32_t legacy_device_number;
|
||||
} fields;
|
||||
} dev_id;
|
||||
|
||||
/*
|
||||
* the slot of the device, if the device is a PCI device, the slot
|
||||
* represents BDF, otherwise it represents legacy device slot number
|
||||
*/
|
||||
uint32_t slot;
|
||||
|
||||
/** reserved for extension */
|
||||
uint32_t reserved0;
|
||||
|
||||
/** the IO resource address of the device, initialized by ACRN-DM. */
|
||||
uint32_t io_addr[6];
|
||||
|
||||
/** the IO resource size of the device, initialized by ACRN-DM. */
|
||||
uint32_t io_size[6];
|
||||
|
||||
/** the options for the virtual device, initialized by ACRN-DM. */
|
||||
uint8_t args[128];
|
||||
|
||||
/** reserved for extension */
|
||||
uint64_t reserved1[8];
|
||||
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
/**
|
||||
* Hypervisor api version info, return it for HC_GET_API_VERSION hypercall
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user