[PATCH] IDE clean 12 3rd attempt

Martin Dalecki (dalecki@evision-ventures.com)
Sun, 24 Feb 2002 13:28:48 +0100


This is a multi-part message in MIME format.
--------------080400050102000500000602
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Since this apparently didn't get through to the mailing list
I'm sending it again. This time compressed.
S'cuse me for the inconvenience.
The same notes as before apply:

This patch does the following:

1. Add some notes to Documentation/driver-model.txt about how and
and where to mount the driverfs.

2. Reorganize and prepare the PCI scanning code for proper device
dependant splitup. Basically tedious cleanup of macro games.

3. Use struct pci_dev name field as the name of PCI host dapaters
instead of invention ambigious IDE special names. This makes
the kernel bootup messages look a bit shifted, since those names are bit
longer, but makes up for consistance and should allow one later
to rearage things to fit into the generic PCI device initialization
mechanisms provided by the kernel.

4. Set 3. Allowed us to make the host chip specific
pci_init_xxx class functions have the proper signature of
module initializers. This will make it possible to make true
modules out of them later.

5. Make some functions in cmd64x.c static which where not used
elsewhere.

6. rename ide_special_settings to trust_pci_irq - this is reflecting
it's functionality better. And make it match the pci device vendor
as well as the device ID. It was a BUG to match only the device id!.

7. Make the chanell setup more tollerant for BIOS-es which don't
report IO and MEM bases properly. The code found previously there
tryed but was inconsistant.

8. Start to use proper terminology in ide-pci.c: host chip, channel,
drive instead of hwif, port, drive...

9. Enlarge the name field from ide_hwif_t to 64 bytes. It was only 6
previously and there where custom names there which where exceeding
this!!! But since we use the proper pci devce name there now instead,
we had to extend the size of this field anyway.

10. Add some explanatory comments and fix misguiding comments here and
there.

11. Kill the proc_ide_write_config and proc_ide_read_config brain
damage! Those where backdoors to the pci configuration registers on PCI
devices and IO registers on directly connected ISA ATA controllers.
They didn't discrement between them!

Access to both of them *simply* doesn't belong into an operating system,
which is supposed to abstract out the access to hardware! Did I mention
that access to both can be done from user land without an IDE special
interface! Any program which was using them (I hardly beleve there is
one) just deserves to loose. The programmer responsible for it
deserves to be fired immediately.

12. Move ide_map_xx and ide_unmap_xx tinny bio level wrappers away
from the "global" ide.h to where those are actually used and kill
trivial wrappers for otherwise generic bio_ routines. Just fighting
code obfuscation. The "rq->bio is used or is not there" brain
damage in ide-taskfile.c has to be fixed later. Possibly by killing
ide-taskfile.c alltogether, becouse this should be a driver for
users and not a driver for ATA disk disaster recovery companys...

13. Kill hwif->pci_devid and hwif->pci_venid. Just use the already
present hwif->pci_dev field instead.

14. Kill unused big switch ide_reinit_drive function. This silly
functon was switching upon every possible device driver cathegory
and calling the correspondng reinit function directly. This
idiocy was fortunately not used.

That's all... Most will be clear if one starts looking at the changes
in ide.h of course...

In contrast to the previous patches this one is actually fixing two
serious bugs.

The next direct step will be to kill the sigle place global PCI device
type recognition list from ide-pci.c by pushing the entries to where
they belong -> the host chips setup modules.

--------------080400050102000500000602
Content-Type: application/x-gzip;
name="ide-clean-12.diff.gz"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="ide-clean-12.diff.gz"

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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/