|
|
Log in / Subscribe / Register

PCI: Add d3cold and device-specific reset for Qualcomm devices

From:  Jose Ignacio Tornos Martinez <jtornosm-AT-redhat.com>
To:  bhelgaas-AT-google.com, alex-AT-shazbot.org
Subject:  [PATCH v7 0/3] PCI: Add d3cold and device-specific reset for Qualcomm devices
Date:  Wed, 03 Jun 2026 12:58:50 +0200
Message-ID:  <20260603105853.326290-1-jtornosm@redhat.com>
Cc:  jjohnson-AT-kernel.org, mani-AT-kernel.org, linux-pci-AT-vger.kernel.org, linux-wireless-AT-vger.kernel.org, ath11k-AT-lists.infradead.org, ath12k-AT-lists.infradead.org, mhi-AT-lists.linux.dev, linux-kernel-AT-vger.kernel.org, Jose Ignacio Tornos Martinez <jtornosm-AT-redhat.com>
Archive-link:  Article

Some PCIe devices lack working reset methods for VFIO passthrough scenarios.
These devices typically have no FLR, advertise NoSoftRst+ (blocking PM reset),
and have broken or unavailable bus reset. When a VM crashes, VFIO cannot reset
the device for reuse without a working reset method.

This series addresses the problem by adding general d3cold infrastructure and
device-specific reset for Qualcomm devices:

**Patch 1/3: d3cold reset method**
Adds D3cold as a general reset method with strict _PR3 requirement. Only
attempts true power cycling via platform control (ACPI _PR3), never falls
back to D3hot. This provides genuine power-off reset on platforms that
support it.

**Patch 2/3: device-specific reset for Qualcomm devices**
Adds device-specific reset entries for Qualcomm WCN6855/WCN7850 WiFi cards and
SDX62/SDX65 modems using D3cold power cycling with automatic D3hot fallback.
Uses pci_set_power_state(D3cold) which automatically falls back to D3hot on
platforms without _PR3. Extracts shared pci_dev_d3cold_d0_cycle() helper to
avoid code duplication with general d3cold method. Device-specific reset is
position #1 in reset hierarchy, providing immediate working reset for these
Qualcomm devices.

**Patch 3/3: Qualcomm quirk_no_bus_reset**
Disables broken bus reset for Qualcomm devices. Testing proves this is
device-specific: MediaTek MT7925e works correctly with bus reset using the
same passive M.2-to-PCIe adapters where Qualcomm devices fail, confirming
PERST# is properly wired and the issue is not deployment-specific. Acts as
safety net to prevent broken SBR if users override via sysfs.

v7: Address the comments from Jeff Johnson: the problem was detected for
    the specific devices WCN6855 and WCN7850, use the name of the devices
    instead of the related drivers ath11k and ath12k, which support a large
    number of devices (patches 2/3 and 3/3).
v6: https://lore.kernel.org/all/20260602160024.1171949-1-jtor...

Jose Ignacio Tornos Martinez (3):
  PCI: Add d3cold as general reset method
  PCI: Add device-specific reset for Qualcomm devices
  PCI: Disable broken bus reset on Qualcomm devices

--
2.53.0




Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds