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
>
>
>

Reply via email to