Package: linux-image-6.1.55-1-amd64
Version: 6.1.38-4
Severity: normal
Tags: patch upstream
X-Debbugs-Cc: george.shuk...@gmail.com

When Dell R660xs server is booting using ipxe.efi (in UEFI mode), reboots are
hanging because of tg3 driver.

Steps to reproduce:

1. Switch server to EFI mode
2. Enable PXE on any interfaces
3. Enable PXE  as first in boot order
4. Configure external dhcp/tftp server with ipxe.efi (of any version)
5. Boot. ipxe.efi will try to get loading parameters and exit, a normal linux
is loaded
6. Assure tg3 driver is loaded (rmmod tg3; modprobe tg3)
7. Reboot

Expected behaivor: reboot

Actual behavior: system hanging after message `ACPI: PM: Preparing to enter
system sleep state S5`.

I belive this problem was present present for long time, but in 6.0 there was
introduced commit 2ca1c94ce0b  which changed the tg3_shutdown function.

-       if (system_state == SYSTEM_POWER_OFF)
-               tg3_power_down(tp);
+       tg3_power_down(tp);

Because of that tg3_power_down now is called even when SYSTEM_RESTART. (I
confirmed that it causes hangs on older kernels during power off, but it's less
of the problem, because for servers it's expected to get server working back
after reboot, not so much for poweroff).

(ipxe.efi is important to reproduce this bug). Any network card can be used,
just a presence of tg3 driver and embedded Broadcom Inc. and subsidiaries
BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller is enough to
trigger it.

Restoring back this behavior is solving reboot problem. I've reported it to the
Dell community forum:
https://www.dell.com/community/en/users/647c085ec3b1ef2541ca0c64, but it's
unknown if they fix EFI network driver or not.

Patch to fix hanging is attached.


-- System Information:
Debian Release: trixie/sid
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 
'unstable'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 6.5.0-3-amd64 (SMP w/20 CPU threads; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Dell R650xs has embbedded network card with tg3 driver.
If network was initialized by ipxe.efi in PXE/UEFI mode,
server hangs during reboot. This is partial revert of upstream
commit 2ca1c94ce0b.

--- linux-6.1.38.orig/drivers/net/ethernet/broadcom/tg3.c
+++ linux-6.1.38/drivers/net/ethernet/broadcom/tg3.c
@@ -18082,7 +18082,8 @@ static void tg3_shutdown(struct pci_dev
        if (netif_running(dev))
                dev_close(dev);
 
-       tg3_power_down(tp);
+       if (system_state == SYSTEM_POWER_OFF)
+               tg3_power_down(tp);
 
        rtnl_unlock();
 

Reply via email to