On Sun, May 11, 2025 at 06:20:41PM +0300, Yan Vugenfirer wrote: > On Sun, May 11, 2025 at 4:27 PM Michael S. Tsirkin <m...@redhat.com> wrote: > > > > On Wed, Mar 12, 2025 at 02:43:52PM +0200, Yan Vugenfirer wrote: > > > > > > > > > On Tue, Mar 11, 2025 at 4:02 AM Suthikulpanit, Suravee < > > > suravee.suthikulpa...@amd.com> 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 <kra...@redhat.com> > > > >> Signed-off-by: Suravee Suthikulpanit > > > <suravee.suthikulpa...@amd.com> > > > > > > > > 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? > > There was a patch fixing it: > https://patchwork.kernel.org/project/qemu-devel/patch/20250325021140.5676-1-suravee.suthikulpa...@amd.com/
Ah, right. Thanks. > > > > > > > > 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 > > > > > > > > > > > > > >