From: P. C. <p_c...@ho...> - 2003-01-15 20:35:26
|
I don't feel I am the one that should mess with the ide part (I could break a lot of important things). However, sleeping has failed many times because of ide. drivers/ide/ide-disk.c: (around 1557) printk(KERN_INFO "suspending: %s ", drive->name); do_idedisk_standby(drive); drive->blocked = 1; BUG_ON (HWGROUP(drive)->handler); AFAIK handler is set whenever an irq is being handled (correct me if I'm wrong). ide irqs are very often on the system and may happen between the actual call to 'ide_do_cmd' (called by do_idedisk_standby) and the "blocked=1" line. Setting a strict lock may deadlock the system pretty hard! Would the "blocked=1" line break the do_idedisk_standby? Does "blocked" really stop subsequent disk activity? Or, alternatively should we setup a mechanism (spinlock?) to cause the do_ide_standby to wait until pending requests-data finishes? Kernels: 2.5.55-58 ACPI: the one in those. Currently: 20030109 System: HP Omnibook Xe3 GC, Disk: IBM DeskStar in 32bit mode. Thanks. |