Skip to content

[Bug]: XG Mobile live enable hangs on GV301QH unless pcie_port_pm=off #320

Description

@serengon

Affected Component

rog-platform (GPU Switching / Armoury / WMI)

Issue Description

I may have found a workaround/root-cause clue for an old XG Mobile switching hang reported in asus-linux/supergfxctl#136.

My machine is a first-generation Flow X13 (GV301QH, BIOS 418) with the RTX 3080 XG Mobile. Without an extra kernel parameter, the low-level live enable sequence stalls in the ASUS WMI call for roughly 30 seconds, returns 0x2, and the XG GPU never enumerates. One attempt ended in an abrupt firmware reset/hang.

Adding only pcie_port_pm=off makes the same enable and disable sequence work consistently without rebooting.

I realize this may be a platform/kernel PCIe power-management quirk rather than an asusctl bug. I'm reporting it because the old supergfxctl project is archived, the current repository includes the GPU/WMI platform code, and warning affected Flow users could prevent a hard hang.

Steps to Reproduce

  1. Boot the GV301QH normally with the internal GTX 1650 active.
  2. Connect and lock the RTX 3080 XG Mobile.
  3. Stop the graphical session, release the NVIDIA stack, set egpu_enable=1, perform the XG Mobile HID initialization, and rescan PCI.
  4. Without pcie_port_pm=off, the WMI call returns 0x2 and the XG GPU does not enumerate.
  5. Add only pcie_port_pm=off to the kernel command line and reboot.
  6. Repeat the same transition. The RTX 3080 enumerates at PCIe 3.0 x8, the NVIDIA driver binds, and the graphical session returns.
  7. Disable the XG Mobile again. The RTX disappears and the internal GTX 1650 re-enumerates without rebooting.

I tested pcie_aspm=off both together with pcie_port_pm=off and then removed it. It is not required.

Expected vs Actual Behavior

Expected: the live XG Mobile transition succeeds, or fails cleanly without hanging the session or machine.

Actual without the parameter: the ASUS WMI call stalls and returns 0x2; the XG GPU does not enumerate and the machine may hang/reset.

Actual with pcie_port_pm=off: live enable and disable both complete successfully and can be repeated after a fresh boot.

Laptop Model / Board Name

ROG Flow X13 GV301QH_GV301QH, BIOS GV301QH.418

Linux Distribution

Fedora Linux 44

Kernel Version

7.1.8-200.fc44.x86_64

asusctl / asusd / ROG Control Center Version

asusctl/asusd 6.4.0. The live switching test itself was performed through a separate Linux implementation of the low-level XG Mobile sequence, not through an asusctl or supergfxctl command.

Desktop Environment & Display Server

GNOME (Wayland)

Relevant Logs

# Failed attempt without pcie_port_pm=off
asus_wmi: Failed to set egpu state (retval): 0x2

# Successful attempt with pcie_port_pm=off
pci 0000:01:00.0: [10de:249c] type 00 class 0x030000 PCIe Legacy Endpoint
pci 0000:01:00.0: 63.008 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x8 link at 0000:00:01.1

Full notes and additional logs: utajum/g-helper-linux#171

Historical report with a very similar hang: https://gitlab.com/asus-linux/supergfxctl/-/work_items/136

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingkernelasus-armoury kernel driverrog-platformGPU Switching / Armoury / WMI

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions