Re: 2.6.25 -> 2.6.26-rc1: pcmcia flash card changed name from hda to hdc

From: Bartlomiej Zolnierkiewicz
Date: Fri Jun 06 2008 - 16:45:33 EST



Hi,

On Thursday 05 June 2008, Pavel Machek wrote:
> Hi!
>
> > > After update to 2.6.26-rc1, CF card (in pcmcia slot) moved from hda to
> > > hdc on thinkpad x60 (and broke my scripts).
> > >
> > > Is that intentional?
> >
> > Please send dmesgs for 2.6.25 and 2.6.26-rc1 so we can tell more.
>
> Sorry it took me so long...
> Pavel

No problem, lets see what is going on:

> 2.6.26-rc5: flash card is at /dev/hdc.

[...]

> Uniform Multi-Platform E-IDE driver
> ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
> ICH7: IDE controller (0x8086:0x27df rev 0x02) at PCI slot 0000:00:1f.1
> ICH7: not 100% native mode: will probe irqs later
> ICH7: IDE port disabled
> ide0: BM-DMA at 0x1810-0x1817

ide0 interface is claimed by piix host driver...

> Probing IDE interface ide0...
> ide0 at 0x1f0-0x1f7,0x3f6 on irq 14

...but there are no devices attached to it.

[...]

> pcmcia: registering new device pcmcia0.0
> Probing IDE interface ide1...
> hdc: SunDisk SDP3B-20, CFA DISK drive
> hdd: SunDisk SDP3B-20, CFA DISK drive
> ide-probe: ignoring undecoded slave
> ide1 at 0x9100-0x9107,0x910e on irq 16

PCMCIA IDE controller is inserted and ide-cs claims the next free
interface (ide1) and then detects device on it.

[...]

Now in 2.6.25 it was is like this:

> 2.6.25 : flash card is on /dev/hda

[...]

> Uniform Multi-Platform E-IDE driver
> ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
> ICH7: IDE controller (0x8086:0x27df rev 0x02) at PCI slot 0000:00:1f.1
> ICH7: not 100% native mode: will probe irqs later
> ICH7: IDE port disabled
> ide0: BM-DMA at 0x1810-0x1817, BIOS settings: hda:PIO, hdb:PIO
> Probing IDE interface ide0...

Same as in 2.6.26-rc1.

[...]

> pcmcia: registering new device pcmcia0.0
> Probing IDE interface ide0...
> hda: SunDisk SDP3B-20, CFA DISK drive
> hdb: SunDisk SDP3B-20, CFA DISK drive
> ide-probe: ignoring undecoded slave
> ide0 at 0x9100-0x9107,0x910e on irq 16

However ide0 (already claimed by piix host driver) is re-used by ide-cs
host driver.

[...]

I now see the source cause of the hda -> hdc name change - we've fixed
bast-ide (for arm/bast and arm/vr1000) palm_bk3710 (arm/davinci), ide-cs
and delkin_cb to use ide_find_port() instead of ide_deprecated_find_port()
in the commit 4f0eee4d877e3b617b6a22d209d52b3dfca2b2a7.

This was needed because re-using interfaces already claimed by other host
drivers was buggy (i.e. if ide-cs was used along with some other host driver
that can be unloaded, unloading the other driver would result in attempt to
un-register ide-cs interface => havoc), also the change was necessary for
proper IDE warm-plug support (devices can be added/removed to ide0).

We may try to bring the old behavior back with some (major) hackery but:

- the old behavior was buggy (it could result in _real_ bugs under certain
circumstances)

- the issue will come back again if allow module unloading for IDE PCI host
drivers or remove static ide_hwifs[] table

- there shouldn't be many systems affected by it since you need to use both
bast-ide/palm_bk3710/ide-cs/delkin_cb and some other host driver (for host
which has _all_ IDE interfaces empty)

- we've never claimed to have stable device naming (we try very hard to keep
it unchanged and avoid unnecessary changes but sometimes it isn't feasible)
and there are more reliable means for achieving it (udev / UUIDs)

so I guess that is fair to say that ide-cs name change is an inconvenient
side-effect of moving things forward? [ and I'm _really_ sorry about it! ]

Thanks,
Bart
--
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/