On Wed, Mar 12, 2025 at 02:43:52PM +0200, Yan Vugenfirer wrote: > > > On Tue, Mar 11, 2025 at 4:02 AM Suthikulpanit, Suravee < > [email protected]> wrote: > > > > On 3/9/2025 8:44 PM, Michael S. Tsirkin 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. > >> > >> 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 <[email protected]> > >> Signed-off-by: Suravee Suthikulpanit <[email protected]> > > > > Will the existing drivers bind with the device then? > > Existing Windows would not recognize the device ID. > > Actually, Linux and Windows does not depend on the PCI vendor / device > ids to probe devices and initialize AMD IOMMU. Instead, it depends on > the ACPI IVRS table. > > Checking on a real system w/ AMD IOMMU enabled booting Windows Server > 2022, there is no AMD IOMMU device showing in the Device Manger. > > In this case, I believe Windows is not fully initializing the > QEMU-emulated AMD IOMMU. So Windows would not remove the IOMMU PCIe from > the list of OS visible devices and therefore expose the PNPID to the > device manager. And since the device ID is zero, it appears as an "Other > devices->PCI Device (with warning sign). > > Therefore, it we have two options: > > 1. Fake the device ID to 0x1419, which is current appear in the > machine.inf as an entry in section [AMD_SYS.NTamd64]: > > %IommuDevice_Desc% = NO_DRV,PCI\VEN_1022&DEV_1419 > > Considering that this is a "null driver" (no actual driver is loaded for the > PCIe endpoint according to machine.inf), I recommend using this PNP ID. >
So this is the status quo really or did I miss anything? > > 2. Figure out why Windows does not recognize the device. > > The answer is simple: the PCIe endpoint's PNP ID is unknown to Windows. So > technically device is recognized (it is shown in Device Manager after all), > but > there are no compatible drivers for it. And in anycase, machine.inf specifies > "null driver" for AMD PCIe endpoint IOMMU device. The device will get a > friendly name in Device Manager and considered to be "installed" by Windows, > by > there is no actual driver associated with the device. > > Best regards, > Yan. > > > > Anyhow, we should still assign some PCI ID value (instead of zero). > > Thanks, > Suravee > > > >
