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


Reply via email to