Thread (44 messages) 44 messages, 5 authors, 2008-08-08

Re: [PATCH] ide-floppy fix

From: Borislav Petkov <hidden>
Date: 2008-07-20 12:06:31
Also in: lkml

Hi Bart,

On Wed, Jul 16, 2008 at 07:56:46PM +0200, Bartlomiej Zolnierkiewicz wrote:
On Wednesday 16 July 2008, Borislav Petkov wrote:
quoted
On Tue, Jul 15, 2008 at 10:58:48PM +0200, Bartlomiej Zolnierkiewicz wrote:
quoted
On Tuesday 15 July 2008, Borislav Petkov wrote:
quoted
On Wed, Jul 16, 2008 at 05:59:16PM +0200, Bartlomiej Zolnierkiewicz wrote:
quoted
Hi,

On Tuesday 15 July 2008, Borislav Petkov wrote:

[...]
quoted
On a different note, the current pata tree on top of v2.6.25-2125-g50515af blows
up here with the following error:

[    4.296729] Uniform Multi-Platform E-IDE driver
[    4.297905] ICH4: IDE controller (0x8086:0x24cb rev 0x02) at  PCI slot 0000:00:1f.1
[    4.297986] ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ 18
[    4.298153] ICH4: not 100% native mode: will probe irqs later
[    4.298213]     ide0: BM-DMA at 0xfc00-0xfc07
[    4.298282]     ide1: BM-DMA at 0xfc08-0xfc0f
[    4.561768] hda: QUANTUM FIREBALLlct10 20, ATA DISK drive
[    4.816724] hdb: SAMSUNG SP2014N, ATA DISK drive
[    4.867959] hda: drive side 80-wire cable detection failed, limiting max speed to UDMA33
[    4.868027] hda: UDMA/33 mode selected
[    4.868441] hdb: UDMA/100 mode selected
[    5.540683] hdc: IOMEGA ZIP 100 ATAPI, ATAPI FLOPPY drive
[    5.795564] hdd: IC35L120AVV207-0, ATA DISK drive
[    5.847295] hdd: host side 80-wire cable detection failed, limiting max speed to UDMA33
[    5.847362] hdd: UDMA/33 mode selected
[    5.847715] ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
[    5.855487] ide1 at 0x170-0x177,0x376 on irq 15
[    5.875927] ide_generic: please use "probe_mask=0x3f" module parameter for probing all legacy ISA IDE ports
[    5.876012] ide_generic: I/O resource 0x1F0-0x1F7 not free.
[    5.876074] ide_generic: I/O resource 0x170-0x177 not free.
[   11.342504] hde: no response (status = 0xa1), resetting drive
[   17.206535] hdf: no response (status = 0xa1), resetting drive
hde? hdf?

[...]
yep, looks strange to me too. Isn't that the MAX_HWIFS upper bound of a loop.. ?
Close, it is related to MAX_HWIFS being upper bound on hws[]
in ide_generic.c but now we loop for ARRAY_SIZE(legacy_bases).

IOW there is a memset(hws, 0, MAX_HWIFS) missing at the top of
ide_generic_init() (please re-test after adding it).

This may also explain the later problems with ide_host_register().
I fixed this in pata tree now with:

"ide-generic: remove ide_default_{io_base,irq}() inlines (take 2)" patch
here's the root cause for the problem: I had both Intel ICH chipset
(BLK_DEV_PIIX) und generic ide (BLK_DEV_GENERIC) selected in Kconfig and since
ICH4 uses the generic driver detection routine, the second(!) generic detection after the
ICH4 one failed and died. This is why request_region()-resources are shown as
not being free above:
quoted
quoted
quoted
quoted
quoted
[    5.875927] ide_generic: please use "probe_mask=0x3f" module parameter for probing all legacy ISA IDE ports
[    5.876012] ide_generic: I/O resource 0x1F0-0x1F7 not free.
[    5.876074] ide_generic: I/O resource 0x170-0x177 not free.
One of the possible fixes is adding

depends on !BLK_DEV_GENERIC

after each IDE chipset driver using the generic detection in drivers/ide/Kconfig
but it's a not-that-elegant one. Another thing would be using a dummy one like
BLK_DEV_IDEDMA_PCI, but I'm not that sure. Will look into it. I'm pretty sure
you have a better idea...
quoted
quoted
quoted
quoted
quoted
From: Borislav Petkov <redacted>

Check the correct flags-location for set features.

Signed-off-by: Borislav Petkov <redacted>
Thanks, I folded the fix into original patch (->dev_flags is not yet
upstream so -stable fix shouldn't be necessary).

While on it: I later noticed that there will be also need for common
ATA/ATAPI ->dev_flags in the future so I wonder whether current
->dev_flags should be renamed to ->atapi_flags (& s/*DFLAG*/*AFLAG*/).

If there is agreement on this I'll fix it in pata tree.
... or if there's room, use a single ->dev_flags for all possible flag settings?
Unfortunately there isn't enough room left (27 bits are occupied ATM)
and having u64 ->dev_flags sucks...
I'm pretty sure some of the 27 will be removed later but yeah, u64 flags is
kinda bad since it has to be always atomically updated and this has to be
explicitly staged on 32bit cpus due to the wordsize. I guess two flags members
->dev_flags -> ->atapi_flags & co. are also in pata tree now
quoted
are the easiest thing to do for now, you might add some comments to both so we
know which is which.
Sure, I will remember about this when it comes time for ->dev_flags.

Thanks,
Bart
-- 
Regards/Gruß,
    Boris.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help