From: Mike Miller This patch fixes our usage of pdev->intr. We were truncating it to an unchar. We were also reading it before calling pci_enable_device. This patch fixes both of those. Thanks to Bjorn Helgaas for the patch. Signed-off-by: Andrew Morton --- 25-akpm/drivers/block/cciss.c | 5 ++--- 25-akpm/drivers/block/cciss.h | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff -puN drivers/block/cciss.c~cciss-updates-pdev-intr-fix-for-268-rc3 drivers/block/cciss.c --- 25/drivers/block/cciss.c~cciss-updates-pdev-intr-fix-for-268-rc3 Thu Aug 5 15:38:31 2004 +++ 25-akpm/drivers/block/cciss.c Thu Aug 5 15:38:31 2004 @@ -2300,7 +2300,6 @@ static int find_PCI_BAR_index(struct pci static int cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev) { ushort subsystem_vendor_id, subsystem_device_id, command; - unchar irq = pdev->irq; __u32 board_id, scratchpad = 0; __u64 cfg_offset; __u32 cfg_base_addr; @@ -2359,11 +2358,11 @@ static int cciss_pci_init(ctlr_info_t *c #ifdef CCISS_DEBUG printk("command = %x\n", command); - printk("irq = %x\n", irq); + printk("irq = %x\n", pdev->irq); printk("board_id = %x\n", board_id); #endif /* CCISS_DEBUG */ - c->intr = irq; + c->intr = pdev->irq; /* * Memory base addr is first addr , the second points to the config diff -puN drivers/block/cciss.h~cciss-updates-pdev-intr-fix-for-268-rc3 drivers/block/cciss.h --- 25/drivers/block/cciss.h~cciss-updates-pdev-intr-fix-for-268-rc3 Thu Aug 5 15:38:31 2004 +++ 25-akpm/drivers/block/cciss.h Thu Aug 5 15:38:31 2004 @@ -48,7 +48,7 @@ struct ctlr_info unsigned long io_mem_addr; unsigned long io_mem_length; CfgTable_struct *cfgtable; - int intr; + unsigned int intr; int interrupts_enabled; int max_commands; int commands_outstanding; _