Bug 6262
Summary: | SATA hard disk with AHCI mode lost after S3 | ||
---|---|---|---|
Product: | IO/Storage | Reporter: | Austin Yuan (yuanshengquan) |
Component: | Serial ATA | Assignee: | Rafael J. Wysocki (rjwysocki) |
Status: | CLOSED CODE_FIX | ||
Severity: | normal | CC: | acpi-bugzilla |
Priority: | P2 | ||
Hardware: | i386 | ||
OS: | Linux | ||
Kernel Version: | 2.6.16-rc6 | Subsystem: | |
Regression: | --- | Bisected commit-id: | |
Attachments: |
kernel configuration file
DSDT table error message after resuming from S3 output of lspci -v bios information |
Description
Austin Yuan
2006-03-21 01:24:23 UTC
If setting SATA mode to "IDE" in BIOS, the hard disk can be resumed perfectly from S3 Created attachment 7621 [details]
kernel configuration file
Created attachment 7622 [details]
DSDT table
Created attachment 7623 [details]
error message after resuming from S3
Created attachment 7624 [details]
output of lspci -v
Created attachment 7625 [details]
bios information
*** Bug 6260 has been marked as a duplicate of this bug. *** *** Bug 6261 has been marked as a duplicate of this bug. *** I repeated this bug and found the ahci interface will keep busy (PxTFD.STS.BSY=1) after resuming, thus enabling DMA will fail. Then i tried to reset port to recover (using ahci_restart_port) but it didn't help. AHCI spec v1.1 section 10.4 has listed three reset levels, in which port reset is the second one. Haven't tried HBA reset (deepest level) yet. Also I found that ahci driver's suspend has been changed much in libata- dev.git tree's upstream tree, including improving error recovery (reset) functions. I tried the upstream kernel tree plus the patch (http://marc.theaimsgroup.com/?l=linux-kernel&m=114122220923417&w=2 ) but got an oops similar to (http://lkml.org/lkml/2006/1/7/108). It seems that this oops has not been fixed. It's not ahci's bug but brought out by ahci driver when entering an error handling path. Anybody got any good idea on this? For the oops issue for libata-dev git tree, I found that's caused (not root caused) by ahci_start_engine()'s failure. For those ata port without sata device connected, ahci_start_engine() will return error when called by ahci_init_one()->ata_device_add()->ata_host_add()->ahci_port_start() during kernel's initialization at booting up. Then ata_host_add() will call scsi_host_put() then cause an oops. When forcing ahci_start_engine() to return 0, system could boot up normally. libata-dev git tree has much change/improvements on resetting HBA/port/software. At last i can use it as a start point :-) Can you please verify if the problem is still present in the recent -rc kernels (eg. 2.6.19-rc3)? I think this problem has been fixed. Please reopen if this is not the case. |