On Wed, Mar 5, 2025 at 8:54 AM Michael S. Tsirkin <m...@redhat.com> wrote:
> On Tue, Mar 04, 2025 at 06:37:47PM +0000, Suravee Suthikulpanit wrote: > > The QEMU-emulated AMD IOMMU PCI device is implemented based on the AMD > I/O > > Virtualization Technology (IOMMU) Specification [1]. The PCI id for this > > device is platform-specific. > > > > Currently, the QEMU-emulated AMD IOMMU device is using AMD vendor id and > > undefined device id. > > undefined? > > > Therefore, change the vendor id to Red Hat and request a new > QEMU-specific > > device id. > > Won't the drivers fail to load then? > Windows will not identify the device (it is a dummy device, without driver) and SVVP certifications will fail as a result. I suggest using ID that is already present in Windows machine.inf: VEN_1002&DEV_5A23 VEN_1022&DEV_1419 > > > > > [1] > https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/specifications/48882_IOMMU.pdf > > what is this link teaching us? It's a 300 page document. Where to look > in there? > > > Cc: Gerd Hoffmann <kra...@redhat.com> > > Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> > > --- > > docs/specs/pci-ids.rst | 2 ++ > > hw/i386/amd_iommu.c | 3 ++- > > include/hw/pci/pci.h | 1 + > > 3 files changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/docs/specs/pci-ids.rst b/docs/specs/pci-ids.rst > > index 261b0f359f..2416a70a2d 100644 > > --- a/docs/specs/pci-ids.rst > > +++ b/docs/specs/pci-ids.rst > > @@ -100,6 +100,8 @@ PCI devices (other than virtio): > > PCI UFS device (``-device ufs``) > > 1b36:0014 > > PCI RISC-V IOMMU device > > +1b36:0015 > > + PCI AMD IOMMU device (``-device amd-iommu``) > > > > All these devices are documented in :doc:`index`. > > > > diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c > > index dda1a5781f..4d8564249c 100644 > > --- a/hw/i386/amd_iommu.c > > +++ b/hw/i386/amd_iommu.c > > @@ -1766,7 +1766,8 @@ static void amdvi_pci_class_init(ObjectClass > *klass, void *data) > > DeviceClass *dc = DEVICE_CLASS(klass); > > PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); > > > > - k->vendor_id = PCI_VENDOR_ID_AMD; > > + k->vendor_id = PCI_VENDOR_ID_REDHAT; > > + k->device_id = PCI_DEVICE_ID_REDHAT_AMD_IOMMU; > > k->class_id = 0x0806; > > k->realize = amdvi_pci_realize; > > > > diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h > > index 4002bbeebd..da44e6673d 100644 > > --- a/include/hw/pci/pci.h > > +++ b/include/hw/pci/pci.h > > @@ -117,6 +117,7 @@ extern bool pci_available; > > #define PCI_DEVICE_ID_REDHAT_ACPI_ERST 0x0012 > > #define PCI_DEVICE_ID_REDHAT_UFS 0x0013 > > #define PCI_DEVICE_ID_REDHAT_RISCV_IOMMU 0x0014 > > +#define PCI_DEVICE_ID_REDHAT_AMD_IOMMU 0x0015 > > #define PCI_DEVICE_ID_REDHAT_QXL 0x0100 > > > > #define FMT_PCIBUS PRIx64 > > -- > > 2.34.1 > > >