Re: 2.6.7-rc1 breaks forcedeth
From: Jeff Garzik
Date: Sun Jun 06 2004 - 13:15:37 EST
Linus Torvalds wrote:
But it's usually a good thing to try to reset a device as much as possible
when you probe for it. If for no other reason than the fact that then
you'll have it in a "known state", and hopefully there won't be as many
surprises..
Strongly agreed. I stress this, in Linux driver writing talks and
rants, to whomever will listen as "the proper way to do things in Linux".
Presuming things about a device's state upon entry to the driver has led
to bugs in the past. Popular bugs include assuming (a) MAC address
registers hold a valid/useful value or (b) ethernet NIC's DMA engine is
not active. Both of these are quite often not true when you take into
account driver re-loads, warm reboots, and firmware features such as USB
kbd/mouse/storage or PXE booting from a network.
A good driver unconditionally makes sure the device is inactive in its
probe function (struct pci_driver::probe), before registering itself
with any kernel subsystems. This must also be done before request_irq
and before enabling the bus-mastering bit in PCI_COMMAND register.
Jeff
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/