On Thu, 10 Feb 2005 15:05:37 -0500 "Simon White" <[EMAIL PROTECTED]> wrote:
> Hi, > > I've been writing a device driver for a piece of hardware that we recently > found the pci bridge has an issue on software reset (kernel 2.6.8.1, hardware > reset is fine). The bridge appears to corrupt the subvendor/device ids on > next boot. We have found a software work around in that I can write to the > bridge on module exit and it will always detect correctly next boot (through > module_exit when rmmod'd). > > However on shutting down a machine with the module loaded it never works next > time, so is module_exit actually called? (Line wrap your mail please) > Secondly I searched through some code and on google to determine if I could > detect a shutdown notification in the kernel. I thougt I'd found something > using: > > static struct pci_driver hsid_driver = > { > .name = HSID_NAME, > .id_table = id_table, > .probe = hsid_probe, > .driver = > { > .shutdown = hsid_shutdown, > }, > }; > > However that also appears not to work. I wondered what the correct solution > was for detecting system shutdown in the kernel even if the application using > the device has locked up on un-interruptible sleep, so I may try to clean the > hardware up a little. > > Thankyou for any assistance, > Simon How about the following, you probably still need pci_hook to handle PCI hot plug, but you hardware probably doesn't do bus hot plug anyway. ------------ static int hsid_notify(struct notifier_block *this, unsigned long code, void *unused) { if (code==SYS_DOWN || code==SYS_HALT) { bang_the_bridge(); } return NOTIFY_DONE; } static struct notifier_block hsid_notifier = { .notifier_call = hsid_notify, }; hsid_module_init() ... register_reboot_notifier(&hsid_notifier); hsid_module_exit() ... unregister_reboot_notifier(&hsid_notifier); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/