Advertisement
Guest User

Untitled

a guest
Jul 21st, 2015
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 2.24 KB | None | 0 0
  1. diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
  2. index 6b80539..8d4c7f1 100644
  3. --- a/hw/vfio/pci.c
  4. +++ b/hw/vfio/pci.c
  5. @@ -160,6 +160,10 @@ typedef struct VFIOPCIDevice {
  6.  #define VFIO_FEATURE_ENABLE_REQ_BIT 1
  7.  #define VFIO_FEATURE_ENABLE_REQ (1 << VFIO_FEATURE_ENABLE_REQ_BIT)
  8.      int32_t bootindex;
  9. +    uint16_t virtual_vendor_id;
  10. +    uint16_t virtual_device_id;
  11. +    uint16_t virtual_ss_vendor_id;
  12. +    uint16_t virtual_ss_device_id;
  13.      uint8_t pm_cap;
  14.      bool has_vga;
  15.      bool pci_aer;
  16. @@ -3430,6 +3434,23 @@ static int vfio_initfn(PCIDevice *pdev)
  17.      memset(&vdev->pdev.config[PCI_BASE_ADDRESS_0], 0, 24);
  18.      memset(&vdev->pdev.config[PCI_ROM_ADDRESS], 0, 4);
  19.  
  20. +    if (vdev->virtual_vendor_id != 0xFFFF) {
  21. +        vfio_add_emulated_word(vdev, PCI_VENDOR_ID,
  22. +                               cpu_to_le16(vdev->virtual_vendor_id), 0xFFFF);
  23. +    }
  24. +    if (vdev->virtual_device_id != 0xFFFF) {
  25. +        vfio_add_emulated_word(vdev, PCI_DEVICE_ID,
  26. +                               cpu_to_le16(vdev->virtual_device_id), 0xFFFF);
  27. +    }
  28. +    if (vdev->virtual_ss_vendor_id != 0xFFFF) {
  29. +        vfio_add_emulated_word(vdev, PCI_SUBSYSTEM_VENDOR_ID,
  30. +                               cpu_to_le16(vdev->virtual_ss_vendor_id), 0xFFFF);
  31. +    }
  32. +    if (vdev->virtual_ss_device_id != 0xFFFF) {
  33. +        vfio_add_emulated_word(vdev, PCI_SUBSYSTEM_ID,
  34. +                               cpu_to_le16(vdev->virtual_ss_device_id), 0xFFFF);
  35. +    }
  36. +
  37.      vfio_pci_size_rom(vdev);
  38.  
  39.      ret = vfio_early_setup_msix(vdev);
  40. @@ -3553,6 +3574,10 @@ static Property vfio_pci_dev_properties[] = {
  41.                         intx.mmap_timeout, 1100),
  42.      DEFINE_PROP_BIT("x-vga", VFIOPCIDevice, features,
  43.                      VFIO_FEATURE_ENABLE_VGA_BIT, false),
  44. +    DEFINE_PROP_UINT16("x-vid", VFIOPCIDevice, virtual_vendor_id, 0xFFFF),
  45. +    DEFINE_PROP_UINT16("x-did", VFIOPCIDevice, virtual_device_id, 0xFFFF),
  46. +    DEFINE_PROP_UINT16("x-ss-vid", VFIOPCIDevice, virtual_ss_vendor_id, 0xFFFF),
  47. +    DEFINE_PROP_UINT16("x-ss-did", VFIOPCIDevice, virtual_ss_device_id, 0xFFFF),
  48.      DEFINE_PROP_BIT("x-req", VFIOPCIDevice, features,
  49.                      VFIO_FEATURE_ENABLE_REQ_BIT, true),
  50.      DEFINE_PROP_INT32("bootindex", VFIOPCIDevice, bootindex, -1),
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement