Greg KH <greg@xxxxxxxxx> writes: > On Thu, Jun 30, 2005 at 05:21:45PM -0600, Eric W. Biederman wrote: >> However I have gotten feedback a couple of times that >> driver writers tend to prefer using reboot notifiers. In part >> because shutdown functions don't exist for non-pci devices. > > That's a very lame excuse. All busses should have shutdown functions. > And any device that is just bypassing all of the existing bus logic is > still tying into the driver core directly (which is a bad thing by > itself, but that's a different matter.) And there's a shutdown method > there too. > > So there is no excuse to not use it. Please, if they complain, point > them to me :) Ok. Then there is still my complaint and device_shutdown doesn't get called on module removal which means it really doesn't get implemented. Perhaps with kexec now being in the mainline kernel this will get better. Currently I have the following patch outstanding against the e1000 driver because on reboot on some boxes it card revisions it places the card into a sleep state the driver initialization routing cannot get the card out of. And yes the e1000 is bad and is using a reboot_notifier. Eric e1000_main.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -uNr linux-2.4.29-kexec-apic-virtwire-on-shutdownx86_64/drivers/net/e1000/e1000_main.c linux-2.4.29-e1000-no-poweroff-on-reboot/drivers/net/e1000/e1000_main.c --- linux-2.4.29-kexec-apic-virtwire-on-shutdownx86_64/drivers/net/e1000/e1000_main.c Tue Feb 15 14:17:09 2005 +++ linux-2.4.29-e1000-no-poweroff-on-reboot/drivers/net/e1000/e1000_main.c Wed Feb 16 05:49:00 2005 @@ -2777,7 +2777,7 @@ case SYS_POWER_OFF: while((pdev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, pdev))) { if(pci_dev_driver(pdev) == &e1000_driver) - e1000_suspend(pdev, 3); + e1000_suspend(pdev, (event == SYS_DOWN)?0:3); } } return NOTIFY_DONE;