[Pcmcia-cs-devel]request/release region in ide-cs.c ???
Steven Scholz
steven.scholz at imc-berlin.de
Mon Oct 14 17:35:29 EST 2002
Hi there,
I have a problem regarding PCMCIA CS and ide-cs.c.
Please stay calm while I explain why I send this question to this list:
My CS with IDE seems to work fine. But I stumbled over the
request/release_region in
ide-cs.c:
Apparently release_region is called in ide_config() and request_region is called
in ide_release()!?!? Shouldn't it be the other way round?
After the first "insert"
root at dab4k_64937:~# cardctl insert
ide0 at 0x100-0x107,0x10e on irq 9
root at dab4k_64937:~# cat /proc/ioports
there's no (!) requested ioport. But after the first "eject":
root at dab4k_64937:~# cardctl eject
root at dab4k_64937:~# cat /proc/ioports
00000100-0000010f : ide-cs
Repeating insert/eject adds a requested region every time!!!
root at dab4k_64937:~# cardctl insert
ide0 at 0x110-0x117,0x11e on irq 9
root at dab4k_64937:~# cat /proc/ioports
00000100-0000010f : ide-cs
root at dab4k_64937:~# cardctl eject
root at dab4k_64937:~# cat /proc/ioports
00000100-0000010f : ide-cs
00000110-0000011f : ide-cs
root at dab4k_64937:~# cardctl insert
ide0 at 0x120-0x127,0x12e on irq 9
root at dab4k_64937:~# cat /proc/ioports
00000100-0000010f : ide-cs
00000110-0000011f : ide-cs
root at dab4k_64937:~# cardctl eject
root at dab4k_64937:~# cat /proc/ioports
00000100-0000010f : ide-cs
00000110-0000011f : ide-cs
00000120-0000012f : ide-cs
So for me this is a problem!!! The beast is eating up ioport resources!
Now I said I noticed that release_region is called in ide_config() and
request_region is called in ide_release(). When I swap this (as one might
expect) everything works fine!
root at dab4k_64937:~# cat /proc/ioports
root at dab4k_64937:~# cardctl insert
ide0 at 0x100-0x107,0x10e on irq 9
root at dab4k_64937:~# cat /proc/ioports
00000100-0000010f : ide-cs
root at dab4k_64937:~# cardctl eject
root at dab4k_64937:~# cat /proc/ioports
root at dab4k_64937:~# cardctl insert
ide0 at 0x100-0x107,0x10e on irq 9
root at dab4k_64937:~# cat /proc/ioports
00000100-0000010f : ide-cs
root at dab4k_64937:~# cardctl eject
root at dab4k_64937:~# cat /proc/ioports
root at dab4k_64937:~#
So I asked on Pcmcia-cs-devel mailing list and the Godfather himself answered:
dhinds wrote:
>
> On Thu, Oct 10, 2002 at 03:43:50PM +0200, Steven Scholz wrote:
> >
> > Could someone please explain to me why release_region is called in
> > ide_config() and request_region is called in ide_release()???
> > Shouldn't it be the other way round?
>
> The region is allocated for the socket in the PCMCIA core. The ide-cs
> driver releases the region because the kernel IDE driver refuses to
> talk to the device if the IO region is already allocated. After the
> IDE driver shuts down, we re-reserve the region so that the PCMCIA
> core can free it when it shuts down the socket.
>
> As for why this misbehaves on PPC, I'm not sure. It would seem that
> the core code is not reserving (and freeing) the region as expected.
>
> -- Dave
???
So is PPC misbehaving? In which way? Why?
Is it a problem of PCMCIA CS (on PPC) or is it a general problem of
request/release_region on PPC?
BTW: I am using the kernel version of PCMCIA CS compiled into the kernel not as
modules...
(Kernel 2.4.19-rc3, pcmcia-cs-3.2.1)
Thanks a million!
Steven
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list