URL: https://linuxfr.org/forums/linux-debian-ubuntu/posts/erreur-acpi-avec-une-radeon-sur-un-pc-intel Title: Erreur ACPI avec une radeon sur un PC Intel Authors: Eric Date: 2020年04月17日T15:22:51+02:00 License: CC By-SA Tags: debian, matériel, amd, radeon, intel, i915 et xfce Score: 6 Bonjour à tous, # PC sous Debian testing # Je possède un ordinateur portable [HP Pavilion 17-e050sf](https://support.hp.com/fr-fr/document/c03817695) sous Debian testing. C'est un système à cartes graphiques hybrides Intel / AMD, avec pilote "i915" pour la carte intégrée, et pilote "radeon" pour la carte additionnelle AMD (alternativement le pilote "amdgpu" peut-être utilisé pour la carte AMD). ```Shell lspci 00:00.0 Host bridge: Intel Corporation 3rd Gen Core processor DRAM Controller (rev 09) 00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09) 00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09) 00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04) 00:16.0 Communication controller: Intel Corporation 7 Series/C216 Chipset Family MEI Controller #1 (rev 04) 00:1a.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (rev 04) 00:1b.0 Audio device: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller (rev 04) 00:1c.0 PCI bridge: Intel Corporation 7 Series/C216 Chipset Family PCI Express Root Port 1 (rev c4) 00:1c.1 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 (rev c4) 00:1c.2 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 3 (rev c4) 00:1d.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (rev 04) 00:1f.0 ISA bridge: Intel Corporation HM76 Express Chipset LPC Controller (rev 04) 00:1f.2 SATA controller: Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04) 00:1f.3 SMBus: Intel Corporation 7 Series/C216 Chipset Family SMBus Controller (rev 04) 01:00.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430 / Radeon 520 Mobile] 07:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8188EE Wireless Network Adapter (rev 01) 08:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL810xE PCI Express Fast Ethernet controller (rev 07) ``` # Le problème # Le problème c'est que lorsque je démarre l'ordinateur, tout ce passe normalement jusqu'à l'invite GDM. Mais lorsque je me connecte (via GDM) avec mon nom d'utilisateur et mon mot de passe, il y a presque une minute de latence avant que GNOME se lance. C'est cela le problème.(J'ai aussi testé xfce, enlightment, GNOME sous Xorg...sans plus de succès) (Notez bien que le problème ne se produit qu'après un reboot ou démarrage à froid, mais pas après une fermeture de session) Après de nombreux test j'ai constaté que blacklister le module "radeon" résolvait le problème...au prix de la désactivation de la radeon. (Alternativement booter avec le paramètre kernel "radeon.modeset=0" résout aussi le problème de la même manière) Après lecture des logs il semble qu'il y ait des erreurs ACPI lors de du chargement ou du déchargement du driver de la carte graphique additionnelle AMD : ```shell modprobe -r radeon ... [ 134.810044] ACPI Error: Aborting method \AMD3._ON due to previous error (AE_AML_LOOP_TIMEOUT) (20191018/psparse-529) ... [ 134.811473] acpi device:02: Failed to change power state to D0 ... ``` ```shell modprobe radeon ... [ 382.899240] acpi device:02: Failed to change power state to D0 ... [ 389.158051] acpi device:02: Cannot transition from (unknown) to D3hot ... ``` On pourrait penser que le problème est dû au driver radeon, mais en fait j'ai exactement les mêmes messages d'erreur avec les drivers "amdgpu" (avec le support activé pour les cartes "si" et "cik" ) # Tentative d'analyse # D'après : ```shell ls -al /sys/bus/acpi/devices/device\:02/physical_node lrwxrwxrwx 1 root root 0 avril 16 12:57 /sys/bus/acpi/devices/device:02/physical_node -> ../../../../pci0000:00/0000:00:01.0 ``` et ```shell lspci -s .&checktime(0000,00,01,':').0 00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09) (prog-if 00 [Normal decode]) Flags: bus master, fast devsel, latency 0, IRQ 24 Bus: primary=00, secondary=01, subordinate=06, sec-latency=0 I/O behind bridge: 00005000-00005fff [size=4K] Memory behind bridge: c2000000-c2ffffff [size=16M] Prefetchable memory behind bridge: 00000000a0000000-00000000afffffff [size=256M] Capabilities: [88] Subsystem: Hewlett-Packard Company Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port Capabilities: [80] Power Management version 3 Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit- Capabilities: [a0] Express Root Port (Slot+), MSI 00 Capabilities: [100] Virtual Channel Capabilities: [140] Root Complex Link Capabilities: [d94] Secondary PCI Express Kernel driver in use: pcieport ``` Donc l'acpi device:02 c'est un port PCI express. Et la radeon est branchée sur ce port PCI express : ```shell ls /sys/bus/acpi/devices/device\:02/physical_node .&checktime(0000,00,01,':').0:pcie010 .&checktime(0000,01,00,':').0 ... ``` ```shell lspci -vs .&checktime(0000,01,00,':').0 01:00.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430 / Radeon 520 Mobile] DeviceName: Radeon HD 8670M Subsystem: Hewlett-Packard Company Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430 / Radeon 520 Mobile] Flags: bus master, fast devsel, latency 0, IRQ 35 Memory at a0000000 (64-bit, prefetchable) [size=256M] Memory at c2000000 (64-bit, non-prefetchable) [size=256K] I/O ports at 5000 [size=256] Expansion ROM at c2040000 [disabled] [size=128K] Capabilities: [48] Vendor Specific Information: Len=08 Capabilities: [50] Power Management version 3 Capabilities: [58] Express Legacy Endpoint, MSI 00 Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 Capabilities: [150] Advanced Error Reporting Capabilities: [270] Secondary PCI Express Kernel driver in use: radeon Kernel modules: radeon, amdgpu ``` Il semble en effet qu'il ait un problème avec le "power state" sur ce port PCI Express : ```shell cat /sys/bus/acpi/devices/device\:02/power_state (unknown) ``` ```shell cat /sys/bus/acpi/devices/device\:02/real_power_state D0 ``` # Contournements du problème # J'ai bien trouvé quelques contournements pour faire fonctionner le système malgré tout : ## Soit écrire une règle udev pour régler le power/control de la radeon à "on" ## ```shell cat /etc/udev/rules.d/01-pci_pm.rules DRIVER=="radeon", SUBSYSTEM=="pci", ATTR{power/control}="on" ``` Ça marche, le temps de latence disparait ainsi que les erreurs ACPI, mais les températures données par la commande sensors ont augmenté et le ventilateur reste toujours allumé ## Soit passer le paramètre de boot "pcie_port_pm=off" dans GRUB: ## ```shell cat /etc/default/grub ... GRUB_CMDLINE_LINUX="pcie_port_pm=off" ... ``` Ça marche aussi, mais je me demande ce qu’il en est de la consommation des autres cartes PCi express (les 2 cartes Realtek Wifi et ethernet) ? ( Notez qu'avec cette solution : on a ```shell cat /sys/bus/acpi/devices/device\:02/power_state D0 ``` ) # Demande d'aide # J'ai aussi essayé des kernel vanilla (5.5 et 5.6), sans succès. Quant à une Debian stable, j'ai le même problème avec et on peut même dire que ça fonctionne moins bien car le paquet switcheroo-control est bugué dans sa version buster. Je ne sais pas quoi tenter d'autre, si quelqu'un a une idée. # EDIT : Problème identifié # Finalement, j'ai signalé le problème sur le Gitlab de freedesktop.org consacré aux carte graphique AMD : https://gitlab.freedesktop.org/drm/amd/-/issues/3229 Mario Limonciello d'AMD a identifié le problème et proposé un patch pour le kernel :> Hewlett-Packard HP Pavilion 17 Notebook PC/1972 is an Intel Ivy Bridge system with a muxless AMD Radeon dGPU. Attempting to use the dGPU fails [...] The issue is that the root port the dGPU is connected to can't handle the transition from D3cold to D0 so the dGPU can't properly exit runpm.>>The existing logic in pci_bridge_d3_possible() checks for systems that are newer than 2015 to decide that D3 is safe. This would nominally work for an Ivy Bridge system (which was discontinued in 2015), but this system appears to have continued to receive BIOS updates until 2017 and so this existing logic doesn't appropriately capture it.>>Add the system to bridge_d3_blacklist to prevent port pm from being used.

AltStyle によって変換されたページ (->オリジナル) /