ATA mkIII suspend problem

2005-05-03 Thread Andrew Heybey
I just tried RELENG_5 as of last week and the latest (April 13) ATA
mkIII patches from http://people.freebsd.org/~sos/ATA/ on my laptop. 
Unfortunately, it breaks suspend-to-RAM (S3).

History:

I first tried RELENG_5 on the laptop (a Toshiba Tecra M2V) in January
and suspend did not work (the laptop hung after reinitializing the ATA
controller). Then I tried the first release of ATA mkIII. That first
version of the new ATA code made suspend work, and I was happy.

Last week, I tried upgrading to the latest RELENG_5 and the newest ATA
mkIII code, and now after suspending the kernel panics when reiniting
the ATA device(s) in ata-all.c:ata_reinit(), about line 217:

/* reinit the children and delete any that fails */
if (!device_get_children(dev, children, nchildren)) {
mtx_lock(Giant);   /* newbus suckage it needs Giant */
for (i = 0; i  nchildren; i++) {
if (children[i]  device_is_attached(children[i]))
if (ATA_REINIT(children[i])) {
if (ch-running-dev == children[i]) {

device_printf(ch-running-dev,
  FAILURE - device detached\n);
ch-running-dev = NULL;
ch-running = NULL;
}
device_delete_child(dev, children[i]);
}
}
free(children, M_TEMP);
mtx_unlock(Giant); /* newbus suckage dealt with, release Giant */
}

The problem is that ch-running is NULL at this point.

Any suggestions on how to further debug or fix?

thanks,
andrew
___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: ATA mkIII suspend problem

2005-05-03 Thread Søren Schmidt
Andrew Heybey wrote:
I just tried RELENG_5 as of last week and the latest (April 13) ATA
mkIII patches from http://people.freebsd.org/~sos/ATA/ on my laptop. 
Unfortunately, it breaks suspend-to-RAM (S3).

History:
I first tried RELENG_5 on the laptop (a Toshiba Tecra M2V) in January
and suspend did not work (the laptop hung after reinitializing the ATA
controller). Then I tried the first release of ATA mkIII. That first
version of the new ATA code made suspend work, and I was happy.
Last week, I tried upgrading to the latest RELENG_5 and the newest ATA
mkIII code, and now after suspending the kernel panics when reiniting
the ATA device(s) in ata-all.c:ata_reinit(), about line 217:
/* reinit the children and delete any that fails */
if (!device_get_children(dev, children, nchildren)) {
mtx_lock(Giant);   /* newbus suckage it needs Giant */
for (i = 0; i  nchildren; i++) {
if (children[i]  device_is_attached(children[i]))
if (ATA_REINIT(children[i])) {
if (ch-running-dev == children[i]) {

device_printf(ch-running-dev,
  FAILURE - device detached\n);
ch-running-dev = NULL;
ch-running = NULL;
}
device_delete_child(dev, children[i]);
}
}
free(children, M_TEMP);
mtx_unlock(Giant); /* newbus suckage dealt with, release Giant */
}
The problem is that ch-running is NULL at this point.
Any suggestions on how to further debug or fix?
Thats been fixed since in -current just replace the line with:
if (ch-running  ch-running-dev == children[i]) {
--
-Søren
___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to [EMAIL PROTECTED]