Messages in this thread Patch in this message |  | | Date | Mon, 11 Dec 2000 15:23:31 -0800 | From | alex@foogod ... | Subject | [patch] I-Opener fix (again) |
| |
It's been a few months (and a couple of kernel releases) since I mentioned this before and it doesn't look like it's made it in, and I haven't seen any more comments on it in the list archives, so I'm bringing it up again in case it just got forgotten about somewhere along the line..
As I remember, Andre Hedrick had asked for clarification on my original post, and I sent a followup message in response, but now I can't seem to find it anywhere in the archives, so I don't know whether it never made it out of my mailer or..
In any case, attached is a patch (against 2.4.0pre11) which fixes the bug which causes disk detection issues on I-Opener (and possibly other unusual) hardware.
The problem is that the code assumes that a flash-disk will always be the primary disk on an interface, but on the I-Opener this is not always the case. If a traditional disk is primary, and a flashdisk is secondary, the detection code (wrongly) disables the primary disk that it had already previously detected.
I would like to see this make it into the official source as it's a very small change that fixes some obviously wrong behavior..
-alex --- drivers/ide/ide-probe.c.orig Mon Dec 11 14:59:08 2000 +++ drivers/ide/ide-probe.c Mon Dec 11 15:00:13 2000 @@ -161,8 +161,8 @@ * Prevent long system lockup probing later for non-existant * slave drive if the hwif is actually a flash memory card of some variety: */ - if (drive_is_flashcard(drive)) { - ide_drive_t *mate = &HWIF(drive)->drives[1^drive->select.b.unit]; + if (!drive->select.b.unit && drive_is_flashcard(drive)) { + ide_drive_t *mate = &HWIF(drive)->drives[1]; if (!mate->ata_flash) { mate->present = 0; mate->noprobe = 1; |  |