Re: [PATCH] ACPI driver support for pata

From: Robert Hancock
Date: Fri Feb 23 2007 - 09:38:37 EST


Alan wrote:
The link order is set up so that we try things in a very specific
deliberate order

- Hardware specific driver (unless it deliberately punts to ACPI)
- ACPI driver using _GTM/_STM etc
- Generic PCI driver ("stay in the mode the BIOS set and pray")
- ISA register compatibility mode (PIO)

This is essentially the strategy used by the old IDE layer since way back
when (minus ACPI support) and has served us pretty well.

Unfortunately, link order appears to have no effect when the drivers in question are built modular, as appears to be the typical case, unlike old IDE where they were generally built in because of all the other busted behavior if you built the drivers as modules. This means that userspace tools like mkinitrd, udev, etc. will need to be taught to try to load drivers in this order, and not to try to use pata_acpi on an Nvidia SATA controller, for example, as the Fedora mkinitrd seems to do. This is more complicated than just that if you have multiple controllers, you have to be even more careful with the load ordering to ensure this ordering applies system-wide, since the pata_acpi or generic drivers will attach to anything, while trying to load a driver for the first controller, you may end up with the second controller getting those drivers attached to them when they had a controller-specific driver available that should have been used instead.

Plus there's controller hotplug - if multiple loaded drivers are listed as being able to drive a piece of hardware, does anything define which driver will get first dibs on attaching to the device when it's hotplugged? I don't know how this ordering will be enforced in that case.

--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@xxxxxxxxxxxxx
Home Page: http://www.roberthancock.com/


-
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/