From: Mike Miller <mike.miller@hp.com>

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 <akpm@osdl.org>
---

 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;
_