Bug 4992

Summary: Power off stops
Product: ACPI Reporter: zilvinas
Component: Power-OffAssignee: Alexey Starikovskiy (astarikovskiy)
Status: CLOSED CODE_FIX    
Severity: high CC: ted
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.13-rc5 Subsystem:
Regression: --- Bisected commit-id:

Description zilvinas 2005-08-03 09:41:45 UTC
Distribution:
Debian/Unstable

Hardware Environment:
Compaq EVO 800N Notebook, with ATI Technologies Inc Radeon Mobility M7,
RAM: 512MB

Software Environment:
kernel .config: http://www.gemtek.lt/~zilvinas/config-2.6.13-rc5

Linux swoop 2.6.12 #1 Sun Jun 19 16:06:12 EEST 2005 i686 GNU/Linux
 
Gnu C                  4.0.2
Gnu make               3.80
binutils               2.16.1
util-linux             2.12p
mount                  2.12p
module-init-tools      3.2-pre1
e2fsprogs              1.38
reiserfsprogs          3.6.19
reiser4progs           line
xfsprogs               2.6.36
pcmcia-cs              3.2.5
nfs-utils              1.0.7
Linux C Library        2.3.2
Dynamic linker (ldd)   2.3.2
Procps                 3.2.5
Net-tools              1.60
Console-tools          0.2.3
Sh-utils               5.2.1
udev                   064
Modules Loaded         prism54 radeon drm cpufreq_ondemand acpi_cpufreq freq_tab
le pcmcia ipv6 irtty_sir sir_dev irda crc_ccitt floppy 8250_pnp 8250 serial_core
 pl2303 usbserial ehci_hcd ohci_hcd yenta_socket rsrc_nonstatic pcmcia_core ipw2
200 firmware_class ieee80211 ieee80211_crypt snd_intel8x0 snd_ac97_codec snd_pcm
_oss snd_mixer_oss snd_pcm snd_timer snd soundcore snd_page_alloc intel_agp agpg
art deflate zlib_deflate zlib_inflate twofish serpent aes_i586 blowfish des sha2
56 sha1 md5 crypto_null dm_mod ide_cd cdrom

Problem Description:

Impossible to power off notebook. Doing 'halt' - power off process stops right
before power off HD (services are already stopped, HD disk partions unmounted).
Sys-rq T - shows a lot of output (Can't capture as this notebook has no serial
port). Last backtrace shows complete_wait() - don't rememmber, and there are
some USB calls down the backtrace. At the time of poweroff I had USB mouse
connected. If there is need I can write down backtrace printed by Sysrq-T

Steps to reproduce:

Run as root:
# halt
Comment 1 zilvinas 2005-08-03 09:43:28 UTC
100% reproduceable.
Comment 2 Len Brown 2005-08-03 18:58:33 UTC
Others have reported that this broke between 2.6.12
and 2.6.13-rc1 -- is this true for your system too?
Comment 3 Andrew Morton 2005-08-03 19:53:37 UTC
yeah, we broke a bunch of stuff in that area.

2.6.13-rc5-git2 should fix this stuff up
(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/snapshots).  It shuld
appear there in 12 hours or so.

Could you please retest tommorow, update this report?  This is
a must-fix for 2.6.13.

Thanks.
Comment 4 zilvinas 2005-08-03 23:48:53 UTC
Len Brown:

I haven't tried version 2.6.13-rc1, but I am sure I had tried 2.6.13-rc2 and it
had the same problems. (rc3, rc4 - skipped for exactly the same problem, tried
rc5 hoping problem was fixed).
Comment 5 zilvinas 2005-08-03 23:57:13 UTC
Andrew Morton:

No problem, sure I will try 2.6.13-rc5-git2 when it shows up on kernel.org. For
now I will try Linus' git repository. There already are some changes related to
ACPI.

Comment 6 zilvinas 2005-08-04 00:48:32 UTC
Andrew, perhaps this will shed some light what is happening. I've tried compiled
kernel from Linus' git repository. Last commit 'git log' is :

commit d95a1b4818f2fe38a3cfc9a7d5817dc9a1a69329
Merge: 194d0710e1a7fe92dcf860ddd31fded8c3103b7a
8066eff0a1a0703ad901dbe5646a47dbfc089ef2
Author: Linus Torvalds <torvalds@g5.osdl.org>
Date:   Wed Aug 3 16:50:19 2005 -0700

Booted fine, poweroff stops right after file systems are unmounted. Sysrq-T
shows such backtrace (Hit Sys-rq several times, always the same backtrace is
shown). Backscrolling (as much as there are buffer, I am using radeon
framebuffer) - I see worker threads 'S' state, 'halt' processs is shown last in
'D'. Backtrace follows:

hcd_submit_urb
wait_for_completion
default_wake_function
usb_start_wait_urb
timeout_kill
usb_internal_control_msg
usb_control_msg
hub_port_suspend
__usb_suspend_device
locktree
usb_suspend_device
__link_walk_path
device_suspend
ohci_reboot
generic_ide_ioctl
activate_task
__group_send_sig_info
sys_kill
block_ioctl
block_ioctl
do_ioctl
vfs_ioctl
get_name
sys_ioctl
sys_enter_esp

I hope this helps.
Comment 7 zilvinas 2005-08-04 00:59:49 UTC
I noticed also something new while toying with 'Sysrq'. It seems if filesystem
are unmounted, yet I hit 'Sysrq-S' twice ...  then Sysrq stops responding (can't
print help message, or 'Sysrq-B' ...). Had to do hard power off. 

Comment 8 zilvinas 2005-08-04 03:50:17 UTC
Andrew, 

2.6.13-rc5-git2 doesn't help, the same behaviour - power off stops right after
unmounting filesystem and before shutting down hda.
Comment 9 zilvinas 2005-08-04 05:12:20 UTC
I've tried patch posted on LKML, see below. 

Report: 

1 test: Power off stops before shutting down hda. Filesystems are unmounted.
Backtrace looks slighly different, but again in USB code. (If you want I can
write it down).

2 test: I've tried to power off Notebook without USB mouse and USB->Serial
converter (PL-2303). In such case notebook shuts down correctly. I've seen
message saying that "cannot suspend  0000:02:0e" ... but otherwise notebook
powers off correctly.

$ lspci
0000:00:00.0 Host bridge: Intel Corp. 82845 845 (Brookdale) Chipset Host Bridge
(rev 04)
0000:00:01.0 PCI bridge: Intel Corp. 82845 845 (Brookdale) Chipset AGP Bridge
(rev 04)
0000:00:1e.0 PCI bridge: Intel Corp. 82801 PCI Bridge (rev 42)
0000:00:1f.0 ISA bridge: Intel Corp. 82801CAM ISA Bridge (LPC) (rev 02)
0000:00:1f.1 IDE interface: Intel Corp. 82801CAM IDE U100 (rev 02)
0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801CA/CAM AC'97 Audio
Controller (rev 02)
0000:01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M7
LW [Radeon Mobility 7500]
0000:02:04.0 Network controller: Intel Corp. PRO/Wireless 2200BG (rev 05)
0000:02:06.0 CardBus bridge: Texas Instruments PCI1410 PC card Cardbus
Controller (rev 02)
0000:02:0e.0 USB Controller: NEC Corporation USB (rev 41)
0000:02:0e.1 USB Controller: NEC Corporation USB (rev 41)
0000:02:0e.2 USB Controller: NEC Corporation USB 2.0 (rev 02)
0000:03:00.0 Network controller: Intersil Corporation Intersil ISL3890 [Prism
GT/Prism Duette] (rev 01)
Subject: [PATCH] Remove suspend() calls from shutdown path
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Andrew Morton <akpm@osdl.org>
Cc: Linus Torvalds <torvalds@osdl.org>,
        Linux Kernel list <linux-kernel@vger.kernel.org>
Content-Type: text/plain
Date: 	Thu, 04 Aug 2005 11:36:26 +0200
Message-Id: <1123148187.30257.55.camel@gaston>
Mime-Version: 1.0
X-Mailer: Evolution 2.2.2 
Content-Transfer-Encoding: 7bit
Sender: linux-kernel-owner@vger.kernel.org
Precedence: bulk
X-Mailing-List: 	linux-kernel@vger.kernel.org
X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on barclay.balt.net
X-Spam-Level: 
X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham 
	version=3.0.3
Status: RO
Content-Length: 1845
Lines: 47

Hi Andrew !

This patch remove the calls to device_suspend() from the shutdown path
that were added sometime during 2.6.13-rc*. They aren't working properly
on a number of configs (I got reports from both ppc powerbook users and
x86 users) causing the system to not shutdown anymore.

I think it isn't the right approach at the moment anyway. We have
already a shutdown() callback for the drivers that actually care about
shutdown and the suspend() code isn't yet in a good enough shape to be
so much generalized. Also, the semantics of suspend and shutdown are
slightly different on a number of setups and the way this was patched in
provides little way for drivers to cleanly differenciate. It should have
been at least a different message.

For 2.6.13, I think we should revert to 2.6.12 behaviour and have a
working suspend back.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

Index: linux-work/kernel/sys.c
===================================================================
--- linux-work.orig/kernel/sys.c	2005-08-01 14:03:46.000000000 +0200
+++ linux-work/kernel/sys.c	2005-08-04 11:32:51.000000000 +0200
@@ -404,7 +404,6 @@
 {
 	notifier_call_chain(&reboot_notifier_list, SYS_HALT, NULL);
 	system_state = SYSTEM_HALT;
-	device_suspend(PMSG_SUSPEND);
 	device_shutdown();
 	printk(KERN_EMERG "System halted.\n");
 	machine_halt();
@@ -415,7 +414,6 @@
 {
 	notifier_call_chain(&reboot_notifier_list, SYS_POWER_OFF, NULL);
 	system_state = SYSTEM_POWER_OFF;
-	device_suspend(PMSG_SUSPEND);
 	device_shutdown();
 	printk(KERN_EMERG "Power down.\n");
 	machine_power_off();


Comment 10 Andrew Morton 2005-08-04 17:38:09 UTC
More power management fixes will appear in 2.6.13-rc6.  Fingers crossed,
we might get this working again.  Please retest and let us know?
Comment 11 zilvinas 2005-08-08 03:08:28 UTC
Hello all, 

2.6.13-rc6 powers off just fine with or without USB devices connected to the
notebook. I consider bug as solved. 

Shall I close it ?
Comment 12 Andrew Morton 2005-08-08 10:21:22 UTC
Zilvinas said "Works for me now. I've tested with 2.6.13-rc6 a few hours
again."
Comment 13 Len Brown 2005-08-10 18:08:36 UTC
ok then -- shipped in 2.6.13-rc6 -- closing.