* pcmcia IDE broken in 2.6.18-rc1 @ 2006-07-08 14:55 Pavel Machek 2006-07-08 16:47 ` Andrew Morton 2006-07-08 17:36 ` Alan Cox 0 siblings, 2 replies; 9+ messages in thread From: Pavel Machek @ 2006-07-08 14:55 UTC (permalink / raw) To: Andrew Morton, kernel list Hi! When I insert the card, I get pccard: PCMCIA card inserted into slot 0 cs: memory probe 0xe8000000-0xefffffff: excluding 0xe8000000-0xefffffff cs: memory probe 0xc0200000-0xcfffffff: excluding 0xc0200000-0xc11fffff 0xc1a00000-0xc61fffff 0xc6a00000-0xc71fffff 0xc7a00000-0xc81fffff 0xc8a00000-0xc91fffff 0xc9a00000-0xca1fffff 0xcaa00000-0xcb1fffff 0xcba00000-0xcc1fffff 0xcca00000-0xcd1fffff 0xcda00000-0xce1fffff 0xcea00000-0xcf1fffff 0xcfa00000-0xd01fffff pcmcia: registering new device pcmcia0.0 PM: Adding info for pcmcia:0.0 ide2: I/O resource 0xF887E00E-0xF887E00E not free. ide2: ports already in use, skipping probe ide2: I/O resource 0xF887E01E-0xF887E01E not free. ide2: ports already in use, skipping probe ... it ends with ide-cs: ide_register() at 0xf999c000 & 0xf999c00e, irq 7 failed :-(. Back to 2.6.17 once again, I'm afraid... Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: pcmcia IDE broken in 2.6.18-rc1 2006-07-08 14:55 pcmcia IDE broken in 2.6.18-rc1 Pavel Machek @ 2006-07-08 16:47 ` Andrew Morton 2006-07-13 18:00 ` Jan Engelhardt 2006-07-08 17:36 ` Alan Cox 1 sibling, 1 reply; 9+ messages in thread From: Andrew Morton @ 2006-07-08 16:47 UTC (permalink / raw) To: Pavel Machek; +Cc: linux-kernel On Sat, 8 Jul 2006 16:55:43 +0200 Pavel Machek <pavel@ucw.cz> wrote: > Hi! > > When I insert the card, I get > > pccard: PCMCIA card inserted into slot 0 > cs: memory probe 0xe8000000-0xefffffff: excluding > 0xe8000000-0xefffffff > cs: memory probe 0xc0200000-0xcfffffff: excluding > 0xc0200000-0xc11fffff 0xc1a00000-0xc61fffff 0xc6a00000-0xc71fffff > 0xc7a00000-0xc81fffff 0xc8a00000-0xc91fffff 0xc9a00000-0xca1fffff > 0xcaa00000-0xcb1fffff 0xcba00000-0xcc1fffff 0xcca00000-0xcd1fffff > 0xcda00000-0xce1fffff 0xcea00000-0xcf1fffff 0xcfa00000-0xd01fffff > pcmcia: registering new device pcmcia0.0 > PM: Adding info for pcmcia:0.0 > ide2: I/O resource 0xF887E00E-0xF887E00E not free. > ide2: ports already in use, skipping probe > ide2: I/O resource 0xF887E01E-0xF887E01E not free. > ide2: ports already in use, skipping probe > ... > > it ends with > > ide-cs: ide_register() at 0xf999c000 & 0xf999c00e, irq 7 failed > > :-(. Back to 2.6.17 once again, I'm afraid... Appears to be the same bug as http://lkml.org/lkml/2006/6/15/155 That debugging effort dried up at "Can you do some more tracing on hwif." You're our only hope. Can you debug it a bit please? ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: pcmcia IDE broken in 2.6.18-rc1 2006-07-08 16:47 ` Andrew Morton @ 2006-07-13 18:00 ` Jan Engelhardt 0 siblings, 0 replies; 9+ messages in thread From: Jan Engelhardt @ 2006-07-13 18:00 UTC (permalink / raw) To: Andrew Morton; +Cc: Pavel Machek, linux-kernel [-- Attachment #1: Type: TEXT/PLAIN, Size: 1681 bytes --] >> When I insert the card, I get >> >> pccard: PCMCIA card inserted into slot 0 >> cs: memory probe 0xe8000000-0xefffffff: excluding >> 0xe8000000-0xefffffff >> cs: memory probe 0xc0200000-0xcfffffff: excluding >> 0xc0200000-0xc11fffff 0xc1a00000-0xc61fffff 0xc6a00000-0xc71fffff >> 0xc7a00000-0xc81fffff 0xc8a00000-0xc91fffff 0xc9a00000-0xca1fffff >> 0xcaa00000-0xcb1fffff 0xcba00000-0xcc1fffff 0xcca00000-0xcd1fffff >> 0xcda00000-0xce1fffff 0xcea00000-0xcf1fffff 0xcfa00000-0xd01fffff >> pcmcia: registering new device pcmcia0.0 >> PM: Adding info for pcmcia:0.0 >> ide2: I/O resource 0xF887E00E-0xF887E00E not free. >> ide2: ports already in use, skipping probe >> ide2: I/O resource 0xF887E01E-0xF887E01E not free. >> ide2: ports already in use, skipping probe >> ... >> >> it ends with >> >> ide-cs: ide_register() at 0xf999c000 & 0xf999c00e, irq 7 failed >> >> :-(. Back to 2.6.17 once again, I'm afraid... > >Appears to be the same bug as http://lkml.org/lkml/2006/6/15/155 As I am one of the probably few people who have some PCMCIA-IDE-drive (Sony PCGA-CD51/A), running 2.6.18-rc1 gives me no problems. pccard: PCMCIA card inserted into slot 0 kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean. pcmcia: registering new device pcmcia0.0 Probind IDE interface ide2... hde: TOSHIBA CD-ROM XM-7002Bc, ATAPI CD/DVD-ROM drive ide2 at 0x180-0x198,0x386 on irq 3 ide-cs: hde: Vpp = 0.0 pcmcia: Detected deprecated PCMCIA ioctl usage from process: hald Seems fine. I can mount and read it w/o problems. $ rpm -q pcmciautils pcmciautils-012-11 (SUSE Linux 10.1) CONFIG_ISA=y # CONFIG_RESOURCES_64BIT is not set Just 2¢, ask for more if needed :) Jan Engelhardt -- ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: pcmcia IDE broken in 2.6.18-rc1 2006-07-08 14:55 pcmcia IDE broken in 2.6.18-rc1 Pavel Machek 2006-07-08 16:47 ` Andrew Morton @ 2006-07-08 17:36 ` Alan Cox 2006-07-08 17:41 ` Andrew Morton 1 sibling, 1 reply; 9+ messages in thread From: Alan Cox @ 2006-07-08 17:36 UTC (permalink / raw) To: Pavel Machek; +Cc: Andrew Morton, kernel list Ar Sad, 2006-07-08 am 16:55 +0200, ysgrifennodd Pavel Machek: > ide2: I/O resource 0xF887E00E-0xF887E00E not free. > ide2: ports already in use, skipping probe > ide2: I/O resource 0xF887E01E-0xF887E01E not free. > ide2: ports already in use, skipping probe Looks like ioremap values not I/O ports. Probably the various IDE layer changes from 2.6.17-mm. My first guess would be the PCMCIA layer changes to use mmio ports are not setting hwif->mmio (I think its ->mmio) to 2 and doing their own resource management. Alan ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: pcmcia IDE broken in 2.6.18-rc1 2006-07-08 17:36 ` Alan Cox @ 2006-07-08 17:41 ` Andrew Morton 2006-07-08 21:35 ` Alan Cox 2006-07-09 22:47 ` Pavel Machek 0 siblings, 2 replies; 9+ messages in thread From: Andrew Morton @ 2006-07-08 17:41 UTC (permalink / raw) To: Alan Cox; +Cc: pavel, linux-kernel On Sat, 08 Jul 2006 18:36:39 +0100 Alan Cox <alan@lxorguk.ukuu.org.uk> wrote: > Ar Sad, 2006-07-08 am 16:55 +0200, ysgrifennodd Pavel Machek: > > ide2: I/O resource 0xF887E00E-0xF887E00E not free. > > ide2: ports already in use, skipping probe > > ide2: I/O resource 0xF887E01E-0xF887E01E not free. > > ide2: ports already in use, skipping probe > > > Looks like ioremap values not I/O ports. Probably the various IDE layer > changes from 2.6.17-mm. > > My first guess would be the PCMCIA layer changes to use mmio ports are > not setting hwif->mmio (I think its ->mmio) to 2 and doing their own > resource management. > 5040cb8b7e61b7a03e8837920b9eb2c839bb1947 looks like a good one to try reverting. commit 5040cb8b7e61b7a03e8837920b9eb2c839bb1947 Author: Thomas Kleffel <tk@maintech.de> Date: Sun May 14 15:16:30 2006 +0200 [PATCH] pcmcia: Make ide_cs work with the memory space of CF-Cards if IO space is not available This patch enables ide_cs to access CF-cards via their common memory rather than via their IO space. Signed-off-by: Thomas Kleffel <tk@maintech.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net> diff --git a/drivers/ide/legacy/ide-cs.c b/drivers/ide/legacy/ide-cs.c index 602797a..b7e459e 100644 --- a/drivers/ide/legacy/ide-cs.c +++ b/drivers/ide/legacy/ide-cs.c @@ -146,7 +146,16 @@ static void ide_detach(struct pcmcia_dev kfree(link->priv); } /* ide_detach */ -static int idecs_register(unsigned long io, unsigned long ctl, unsigned long irq, struct pcmcia_device *handle) +static void idecs_mmio_fixup(ide_hwif_t *hwif) +{ + default_hwif_mmiops(hwif); + hwif->mmio = 2; + + ide_undecoded_slave(hwif); +} + +static int idecs_register(unsigned long io, unsigned long ctl, + unsigned long irq, struct pcmcia_device *handle, int is_mmio) { hw_regs_t hw; memset(&hw, 0, sizeof(hw)); @@ -154,7 +163,19 @@ static int idecs_register(unsigned long hw.irq = irq; hw.chipset = ide_pci; hw.dev = &handle->dev; - return ide_register_hw_with_fixup(&hw, NULL, ide_undecoded_slave); + + if(is_mmio) + return ide_register_hw_with_fixup(&hw, NULL, idecs_mmio_fixup); + else + return ide_register_hw_with_fixup(&hw, NULL, ide_undecoded_slave); +} + +void outb_io(unsigned char value, unsigned long port) { + outb(value, port); +} + +void outb_mem(unsigned char value, unsigned long port) { + writeb(value, (void __iomem *) port); } /*====================================================================== @@ -180,7 +201,8 @@ static int ide_config(struct pcmcia_devi } *stk = NULL; cistpl_cftable_entry_t *cfg; int i, pass, last_ret = 0, last_fn = 0, hd, is_kme = 0; - unsigned long io_base, ctl_base; + unsigned long io_base, ctl_base, is_mmio, try_slave; + void (*my_outb)(unsigned char, unsigned long); DEBUG(0, "ide_config(0x%p)\n", link); @@ -210,7 +232,7 @@ static int ide_config(struct pcmcia_devi /* Not sure if this is right... look up the current Vcc */ CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(link, &stk->conf)); - pass = io_base = ctl_base = 0; + pass = io_base = ctl_base = is_mmio = try_slave = 0; tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; tuple.Attributes = 0; CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); @@ -258,11 +280,45 @@ static int ide_config(struct pcmcia_devi goto next_entry; io_base = link->io.BasePort1; ctl_base = link->io.BasePort1 + 0x0e; + + if (io->win[0].len >= 0x20) + try_slave = 1; + } else goto next_entry; /* If we've got this far, we're done */ break; } + if ((cfg->mem.nwin > 0) || (stk->dflt.mem.nwin > 0)) { + win_req_t req; + memreq_t map; + cistpl_mem_t *mem = (cfg->mem.nwin) ? &cfg->mem : &stk->dflt.mem; + + if (mem->win[0].len < 16) + goto next_entry; + + req.Attributes = WIN_DATA_WIDTH_16|WIN_MEMORY_TYPE_CM; + req.Attributes |= WIN_ENABLE; + req.Base = mem->win[0].host_addr; + req.Size = 0; + + req.AccessSpeed = 0; + if (pcmcia_request_window(&link, &req, &link->win) != 0) + goto next_entry; + map.Page = 0; map.CardOffset = mem->win[0].card_addr; + if (pcmcia_map_mem_page(link->win, &map) != 0) + goto next_entry; + + io_base = (unsigned long) ioremap(req.Base, req.Size); + ctl_base = io_base + 0x0e; + is_mmio = 1; + + if (mem->win[0].len >= 0x20) + try_slave = 1; + + break; + } + next_entry: if (cfg->flags & CISTPL_CFTABLE_DEFAULT) memcpy(&stk->dflt, cfg, sizeof(stk->dflt)); @@ -278,21 +334,26 @@ static int ide_config(struct pcmcia_devi CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); + if(is_mmio) + my_outb = outb_mem; + else + my_outb = outb_io; + /* disable drive interrupts during IDE probe */ - outb(0x02, ctl_base); + my_outb(0x02, ctl_base); /* special setup for KXLC005 card */ if (is_kme) - outb(0x81, ctl_base+1); + my_outb(0x81, ctl_base+1); /* retry registration in case device is still spinning up */ for (hd = -1, i = 0; i < 10; i++) { - hd = idecs_register(io_base, ctl_base, link->irq.AssignedIRQ, link); + hd = idecs_register(io_base, ctl_base, link->irq.AssignedIRQ, link, is_mmio); if (hd >= 0) break; - if (link->io.NumPorts1 == 0x20) { - outb(0x02, ctl_base + 0x10); + if (try_slave) { + my_outb(0x02, ctl_base + 0x10); hd = idecs_register(io_base + 0x10, ctl_base + 0x10, - link->irq.AssignedIRQ, link); + link->irq.AssignedIRQ, link, is_mmio); if (hd >= 0) { io_base += 0x10; ctl_base += 0x10; ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: pcmcia IDE broken in 2.6.18-rc1 2006-07-08 17:41 ` Andrew Morton @ 2006-07-08 21:35 ` Alan Cox 2006-07-08 22:04 ` Andrew Morton 2006-07-09 22:47 ` Pavel Machek 1 sibling, 1 reply; 9+ messages in thread From: Alan Cox @ 2006-07-08 21:35 UTC (permalink / raw) To: Andrew Morton; +Cc: pavel, linux-kernel Ar Sad, 2006-07-08 am 10:41 -0700, ysgrifennodd Andrew Morton: > + io_base = (unsigned long) ioremap(req.Base, req.Size); > + ctl_base = io_base + 0x0e; > + is_mmio = 1; Where does this get unmapped ? ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: pcmcia IDE broken in 2.6.18-rc1 2006-07-08 21:35 ` Alan Cox @ 2006-07-08 22:04 ` Andrew Morton 0 siblings, 0 replies; 9+ messages in thread From: Andrew Morton @ 2006-07-08 22:04 UTC (permalink / raw) To: Alan Cox; +Cc: pavel, linux-kernel, Thomas Kleffel, Dominik Brodowski On Sat, 08 Jul 2006 22:35:47 +0100 Alan Cox <alan@lxorguk.ukuu.org.uk> wrote: > Ar Sad, 2006-07-08 am 10:41 -0700, ysgrifennodd Andrew Morton: > > + io_base = (unsigned long) ioremap(req.Base, req.Size); > > + ctl_base = io_base + 0x0e; > > + is_mmio = 1; > > Where does this get unmapped ? I don't think it does. (drivers/ide/legacy/ide-cs.c:312) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: pcmcia IDE broken in 2.6.18-rc1 2006-07-08 17:41 ` Andrew Morton 2006-07-08 21:35 ` Alan Cox @ 2006-07-09 22:47 ` Pavel Machek 2006-07-09 23:13 ` Andrew Morton 1 sibling, 1 reply; 9+ messages in thread From: Pavel Machek @ 2006-07-09 22:47 UTC (permalink / raw) To: Andrew Morton; +Cc: Alan Cox, linux-kernel Hi! > > > ide2: I/O resource 0xF887E00E-0xF887E00E not free. > > > ide2: ports already in use, skipping probe > > > ide2: I/O resource 0xF887E01E-0xF887E01E not free. > > > ide2: ports already in use, skipping probe > > > > > > Looks like ioremap values not I/O ports. Probably the various IDE layer > > changes from 2.6.17-mm. > > > > My first guess would be the PCMCIA layer changes to use mmio ports are > > not setting hwif->mmio (I think its ->mmio) to 2 and doing their own > > resource management. > > > > 5040cb8b7e61b7a03e8837920b9eb2c839bb1947 looks like a good one to try > reverting. 2.6.18-rc1-mm1 works okay. Is that enough, or do you want me to try reverting just this patch? Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: pcmcia IDE broken in 2.6.18-rc1 2006-07-09 22:47 ` Pavel Machek @ 2006-07-09 23:13 ` Andrew Morton 0 siblings, 0 replies; 9+ messages in thread From: Andrew Morton @ 2006-07-09 23:13 UTC (permalink / raw) To: Pavel Machek; +Cc: alan, linux-kernel, Thomas Kleffel, Dominik Brodowski On Mon, 10 Jul 2006 00:47:08 +0200 Pavel Machek <pavel@ucw.cz> wrote: > Hi! > > > > > ide2: I/O resource 0xF887E00E-0xF887E00E not free. > > > > ide2: ports already in use, skipping probe > > > > ide2: I/O resource 0xF887E01E-0xF887E01E not free. > > > > ide2: ports already in use, skipping probe > > > > > > > > > Looks like ioremap values not I/O ports. Probably the various IDE layer > > > changes from 2.6.17-mm. > > > > > > My first guess would be the PCMCIA layer changes to use mmio ports are > > > not setting hwif->mmio (I think its ->mmio) to 2 and doing their own > > > resource management. > > > > > > > 5040cb8b7e61b7a03e8837920b9eb2c839bb1947 looks like a good one to try > > reverting. > > 2.6.18-rc1-mm1 works okay. Is that enough, or do you want me to try > reverting just this patch? Nope, that's fine, thanks. I think we can say that 5040cb8b7e61b7a03e8837920b9eb2c839bb1947 is busted. Let's give Thomas and Dominik a few days to think about it before we do the deed.. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2006-07-13 18:01 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-07-08 14:55 pcmcia IDE broken in 2.6.18-rc1 Pavel Machek 2006-07-08 16:47 ` Andrew Morton 2006-07-13 18:00 ` Jan Engelhardt 2006-07-08 17:36 ` Alan Cox 2006-07-08 17:41 ` Andrew Morton 2006-07-08 21:35 ` Alan Cox 2006-07-08 22:04 ` Andrew Morton 2006-07-09 22:47 ` Pavel Machek 2006-07-09 23:13 ` Andrew Morton
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox