[BUG] AMD Granite Ridge iGPU (1002:13c0) cannot be reinitialized for VFIO after first guest shutdown

Markus Tomm <[email protected]>
Newsgroups org.freedesktop.lists.amd-gfx,org.kernel.vger.kvm,org.kernel.vger.linux-pci
Message-ID <[email protected]>
Hello,

I would like to report a reproducible VFIO reset issue affecting the AMD 
Granite Ridge integrated GPU (PCI ID 1002:13c0).
The device can be initialized successfully exactly once after a complete 
host power cycle.
After the guest has been shut down (or rebooted), every subsequent guest 
start fails until the host itself is rebooted again.

This issue has been reproduced multiple times using identical hardware, 
guest configuration and test procedure.

Windows reports:

     Code 43 (CM_PROB_FAILED_POST_START)

A physically connected monitor attached to the iGPU also loses its 
signal after the first guest shutdown, confirming that the problem is
not limited to the Windows driver.

----------------------------------------------------------------------
Hardware
----------------------------------------------------------------------

CPU:
AMD Ryzen 9 9950X3D

Mainboard:
MSI X870E Edge Ti WiFi

GPU:
AMD Granite Ridge iGPU
PCI ID: 1002:13c0
Revision: c9

Audio:
1002:1640

Host OS:
Nobara 44

Kernel:
7.1.4-200.nobara.fc44.x86_64

QEMU:
10.2.2

libvirt:
12.0.0

The GPU is bound to vfio-pci during early boot.

----------------------------------------------------------------------
Reproduction
----------------------------------------------------------------------

1. Completely power off the host.
2. Remove AC power.
3. Boot the host.
4. Start the Windows VM.
5. The GPU initializes correctly.
6. A physical monitor connected to the iGPU displays the guest.
7. Shut down the guest.
8. Start the guest again.
9. Windows immediately reports Code 43.
10. The physical monitor remains black.
11. Reboot the host.
12. Start the guest again.
13. The GPU works again.

This behaviour is fully reproducible.

The first guest initialization after every host reboot has succeeded 
reliably in all tests performed. Every second guest initialization has
failed without exception.

----------------------------------------------------------------------
Host observations
----------------------------------------------------------------------

The Linux host reports no PCIe, VFIO or IOMMU errors during the 
transition from the first successful guest start to the second failing
guest start.
The GPU remains bound to vfio-pci during the complete test.
No PCIe AER errors, VFIO errors or kernel warnings are generated.
The failure is only observable inside the guest and by the loss of the 
physical display output.

----------------------------------------------------------------------
Reset capabilities
----------------------------------------------------------------------

GPU:

reset_method = bus

Writing to

/sys/bus/pci/devices/0000:7a:00.0/reset

fails with:

     ENOTTY
     (Inappropriate ioctl for device)

Audio function:

reset_method = pm

----------------------------------------------------------------------
Tests already performed
----------------------------------------------------------------------

The following tests have already been completed without changing the 
behaviour:

- vfio-pci.disable_idle_d3=1
- forcing D0 power state
- PCI remove/rescan
- ReBAR disabled
- physical monitor connected before cold boot
- guest NVRAM reset
- restoring guest from known-good snapshots
- multiple complete cold boots
- guest XML verification

The problem remains identical.

----------------------------------------------------------------------
Expected behaviour
----------------------------------------------------------------------

The iGPU should provide a working reset path allowing it to be 
reinitialized by VFIO without requiring a host reboot.

----------------------------------------------------------------------
Actual behaviour
----------------------------------------------------------------------

Only a complete host reboot restores the GPU into a usable state.

----------------------------------------------------------------------
Question
----------------------------------------------------------------------

Is Granite Ridge (1002:13c0) currently expected to support VFIO 
reinitialization?
If not, is this a known AGESA / firmware limitation or is support still 
missing in the Linux PCI reset infrastructure?

I have attached:

- complete lspci output
- PCI topology
- IOMMU groups
- libvirt domain XML
- kernel boot parameters
- complete kernel log
- filtered kernel log
- version information

If additional debug information or register dumps are required I would 
be happy to provide them.


Kind regards,

Markus
AMD-GraniteRidge-1002-13c0-reset-report.zip (application/zip, 47.3 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.