* Re: [PATCH] pci-ids.rst: Add Red Hat pci-id for AMD IOMMU device [not found] <20250304183747.639382-1-suravee.suthikulpanit@amd.com> @ 2025-03-10 13:57 ` Jonathan Cameron 2025-03-11 8:08 ` Gerd Hoffmann 0 siblings, 1 reply; 3+ messages in thread From: Jonathan Cameron @ 2025-03-10 13:57 UTC (permalink / raw) To: Suravee Suthikulpanit Cc: qemu-devel, pbonzini, mtosatti, mst, marcel.apfelbaum, jon.grimm, santosh.shukla, vasant.hegde, Wei.Huang2, kraxel, bsd, berrange, ddutile, linux-cxl On Tue, 4 Mar 2025 18:37:47 +0000 Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> 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. > > Therefore, change the vendor id to Red Hat and request a new QEMU-specific > device id. > > [1] https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/specifications/48882_IOMMU.pdf > > Cc: Gerd Hoffmann <kraxel@redhat.com> > Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> As a heads up, I believe we have a similar problem with a few of the CXL IDs. The root port and type 3 device both use Intel IDs that were not reserved for this purpose. VID=0x8086, DID=0x7075 and DID=0x0d93 Switch ports and switch-cci are using valid Hisilicon IDs that are for emulation of these device only and are registered in our tracker for these IDs so won't get 'reused'. In both those cases the driver binds on class code in Linux so an ID change to resolve this would be fine for Linux - I can't speak for other OS. Jonathan > --- > 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 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] pci-ids.rst: Add Red Hat pci-id for AMD IOMMU device 2025-03-10 13:57 ` [PATCH] pci-ids.rst: Add Red Hat pci-id for AMD IOMMU device Jonathan Cameron @ 2025-03-11 8:08 ` Gerd Hoffmann 2025-03-12 18:18 ` Jonathan Cameron 0 siblings, 1 reply; 3+ messages in thread From: Gerd Hoffmann @ 2025-03-11 8:08 UTC (permalink / raw) To: Jonathan Cameron Cc: Suravee Suthikulpanit, qemu-devel, pbonzini, mtosatti, mst, marcel.apfelbaum, jon.grimm, santosh.shukla, vasant.hegde, Wei.Huang2, bsd, berrange, ddutile, linux-cxl Hi, > As a heads up, I believe we have a similar problem with a few of the CXL IDs. > The root port and type 3 device both use Intel IDs that were not reserved > for this purpose. VID=0x8086, DID=0x7075 and DID=0x0d93 Essentially we have two kinds of PCI devices in qemu. * The ones which try to mimic existing hardware, they usually have the PCI ID of the device they are emulating (and use the qemu subsystem ID). The classic example is the cirrus vga. There are also many intel chipset devices for piix4 ('pc' machine type) and ich9 ('q35' machine type) with intel IDs. * The ones which are PCI class implementations and do not need a specific ID for drivers to accept them. Most of them have a PCI device ID from the 1b36 vendor ID range. The former tend to be older devices (before hardware standardization was a thing, also before we got a range from 1b36 for qemu), and the latter tend to be newer devices. There are also a bunch of exceptions for historical reasons. The ahci emulation has a ich9 id. xhci even has two variants (one mimicking a NEC host adapter, one with qemu device id). So, in short, using the intel IDs is not necessarily a problem. Depends a bit on what kind of device we are talking about. For PCI class devices it usually is more useful to have a qemu ID though. > Switch ports and switch-cci are using valid Hisilicon IDs that are for > emulation of these device only and are registered in our tracker > for these IDs so won't get 'reused'. That is perfectly fine. There is no need to change IDs, although it makes sense to document that fact in docs/specs/pci-ids.rst Moving them to qemu pci id range is an option too if you prefer that. Your choice. take care, Gerd ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] pci-ids.rst: Add Red Hat pci-id for AMD IOMMU device 2025-03-11 8:08 ` Gerd Hoffmann @ 2025-03-12 18:18 ` Jonathan Cameron 0 siblings, 0 replies; 3+ messages in thread From: Jonathan Cameron @ 2025-03-12 18:18 UTC (permalink / raw) To: Gerd Hoffmann Cc: Suravee Suthikulpanit, qemu-devel, pbonzini, mtosatti, mst, marcel.apfelbaum, jon.grimm, santosh.shukla, vasant.hegde, Wei.Huang2, bsd, berrange, ddutile, linux-cxl On Tue, 11 Mar 2025 09:08:06 +0100 Gerd Hoffmann <kraxel@redhat.com> wrote: > Hi, > > > As a heads up, I believe we have a similar problem with a few of the CXL IDs. > > The root port and type 3 device both use Intel IDs that were not reserved > > for this purpose. VID=0x8086, DID=0x7075 and DID=0x0d93 > > Essentially we have two kinds of PCI devices in qemu. > > * The ones which try to mimic existing hardware, they usually have the > PCI ID of the device they are emulating (and use the qemu subsystem ID). > The classic example is the cirrus vga. There are also many intel > chipset devices for piix4 ('pc' machine type) and ich9 ('q35' machine > type) with intel IDs. > > * The ones which are PCI class implementations and do not need a > specific ID for drivers to accept them. Most of them have a > PCI device ID from the 1b36 vendor ID range. > > The former tend to be older devices (before hardware standardization was > a thing, also before we got a range from 1b36 for qemu), and the latter > tend to be newer devices. There are also a bunch of exceptions for > historical reasons. The ahci emulation has a ich9 id. xhci even has > two variants (one mimicking a NEC host adapter, one with qemu device id). > > So, in short, using the intel IDs is not necessarily a problem. Depends > a bit on what kind of device we are talking about. For PCI class > devices it usually is more useful to have a qemu ID though. They are not valid IDs, so they may get used in future for real hardware of an entirely different type. We don't want these to correspond to real hardware either because the aim is to test out corners of the spec, so we may well implement completely different sets of features to any real implementation. > > > Switch ports and switch-cci are using valid Hisilicon IDs that are for > > emulation of these device only and are registered in our tracker > > for these IDs so won't get 'reused'. > > That is perfectly fine. There is no need to change IDs, although it > makes sense to document that fact in docs/specs/pci-ids.rst Ah. I wasn't aware of the ID space reserved for QEMU or that doc. We can leave the HiSilicon ones alone. I'll sort a docs patch for the 3 of those soon. For the Intel ones can I have a pair for the root port and the CXL type 3 device (so 2 IDs)? We will probably need one shortly for the type2 emulation test device as well. Thanks, Jonathan > > Moving them to qemu pci id range is an option too if you prefer that. > Your choice. > > take care, > Gerd > > ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-03-12 18:18 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20250304183747.639382-1-suravee.suthikulpanit@amd.com>
2025-03-10 13:57 ` [PATCH] pci-ids.rst: Add Red Hat pci-id for AMD IOMMU device Jonathan Cameron
2025-03-11 8:08 ` Gerd Hoffmann
2025-03-12 18:18 ` Jonathan Cameron
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox