Re: [PATCH v13 2/4] drm/doc: Document DRM_WEDGE_RECOVERY_COLD_RESET recovery method

[email protected]
Newsgroups org.freedesktop.lists.dri-devel
Message-ID <[email protected]>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] The example `cold-reset.sh` script fails to find native PCIe hotplug (pciehp) slots for directly attached devices because it initializes its topology traversal with the parent directory of the device, skipping the device's own PCI address which is what actually matches the hotplug slot's `address` attribute.
--

--- Patch [2]: [PATCH v13 2/4] drm/doc: Document DRM_WEDGE_RECOVERY_COLD_RESET recovery method ---
commit ae4802bfe15243552790a2e115f55653f35d380a
Author: Mallesh Koujalagi <[email protected]>

drm/doc: Document DRM_WEDGE_RECOVERY_COLD_RESET recovery method

This commit adds documentation for the WEDGED=cold-reset recovery method
in the DRM subsystem. It explains the consumer expectations and provides
an example udev rule alongside a recovery script for cycling PCIe slot power.

> diff --git a/Documentation/gpu/drm-uapi.rst b/Documentation/gpu/drm-uapi.rst
> index 93df92c4ac8cf..52255247a6db9 100644
> --- a/Documentation/gpu/drm-uapi.rst
> +++ b/Documentation/gpu/drm-uapi.rst
[ ... ]
> +Example - cold-reset
> +--------------------
> +
> +Udev rule::
> +
> +    SUBSYSTEM=="drm", ENV{WEDGED}=="cold-reset", DEVPATH=="*/drm/card[0-9]", \
> +    RUN+="/path/to/cold-reset.sh $env{DEVPATH}"
> +
> +Recovery script::
[ ... ]
> +    dev=$(basename "$syspath")
> +    [ -e "$PCI_DEVS/$dev" ] || die "not a PCI device: $dev"
> +    echo "device : $dev"
> +
> +    slot=""
> +    walk=$(dirname "$(readlink -f "$PCI_DEVS/$dev")")

[Severity: Medium]
Does this topology traversal intentionally skip the device's own PCI address?

By initializing walk with the parent directory via dirname, it appears the
script will miss the device itself when checking for matching hotplug slot
addresses in the loop below. This seems like it could cause the script to fail
to find native PCIe hotplug slots for directly attached devices, leading to a
"no hotplug slot with power control found" error when users try to run it.

> +
> +    while true; do
> +        ancestor=$(basename "$walk")
> +        case "$ancestor" in pci*) break ;; esac  # reached the virtual bus root
> +
> +        ancestor_nofn=${ancestor%.*}  # strip function: 0000:03:01.0 -> 0000:03:01
[ ... ]

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=2
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.