From: Daniel Ritz multifunction cards need to have the same irq assigned to both functions. the code tries that but fails because ret is still set to CS_IN_USE which results in the function having the CB irq assigned. yenta_set_socket then just changes the irq routing to use the PCI interrupt but the first functions irq handler is registered on an ISA interrupt. boom. Signed-off-by: Daniel Ritz Cc: Dominik Brodowski Signed-off-by: Andrew Morton --- drivers/pcmcia/pcmcia_resource.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) diff -puN drivers/pcmcia/pcmcia_resource.c~fix-pcmcia_request_irq-for-multifunction-card drivers/pcmcia/pcmcia_resource.c --- devel/drivers/pcmcia/pcmcia_resource.c~fix-pcmcia_request_irq-for-multifunction-card 2005-08-17 21:42:11.000000000 -0700 +++ devel-akpm/drivers/pcmcia/pcmcia_resource.c 2005-08-17 21:42:11.000000000 -0700 @@ -831,7 +831,8 @@ int pcmcia_request_irq(struct pcmcia_dev } } #endif - if (ret) { + /* only assign PCI irq if no IRQ already assigned */ + if (ret && !s->irq.AssignedIRQ) { if (!s->pci_irq) return ret; irq = s->pci_irq; _