[PATCH] [SCSI] mpt fusion: Fix 32 bit platforms with 64 bit resources.

Pravin Bathija pbathija at amcc.com
Fri Nov 6 16:57:06 EST 2009



> -----Original Message-----
> From: Benjamin Herrenschmidt [mailto:benh at kernel.crashing.org]
> Sent: Thursday, November 05, 2009 12:00 PM
> To: James Bottomley
> Cc: Josh Boyer; Eric.Moore at lsi.com; Pravin Bathija; linux-
> scsi at vger.kernel.org; linuxppc-dev at ozlabs.org
> Subject: Re: [PATCH] [SCSI] mpt fusion: Fix 32 bit platforms with 64
> bit resources.
> 
> On Thu, 2009-11-05 at 10:07 -0600, James Bottomley wrote:
> 
> > > > 	ioc->memmap = mem;
> > > >-	dinitprintk(ioc, printk(MYIOC_s_INFO_FMT "mem = %p,
> mem_phys = %lx\n",
> > > >-	    ioc->name, mem, mem_phys));
> > > >+	dinitprintk(ioc, printk(MYIOC_s_INFO_FMT "mem = %p,
> mem_phys = %llx\n",
> > > >+	    ioc->name, mem, (u64)mem_phys));
> > > >
> > > > 	ioc->mem_phys = mem_phys;
> > > > 	ioc->chip = (SYSIF_REGS __iomem *)mem;
> > > >
> > > > 	/* Save Port IO values in case we need to do downloadboot
> */
> > > >-	ioc->pio_mem_phys = port;
> > > >+	port = ioremap(port_phys, psize);
> > > >+	if (port == NULL) {
> > > >+		printk(MYIOC_s_ERR_FMT " : ERROR - Unable to map
> adapter"
> > > >+			" port !\n", ioc->name);
> > > >+		return -EINVAL;
> >
> > So this looks problematic on a few platforms ... what happens to
> > platforms that have no IO space?  They automatically fail here and it
> > looks like the adapter never attaches.
> 
> Yup, that part of the patch looks wrong.
> 
> However, a mechanical replacement of unsigned long's with
> resource_size_t to hold physical addresses should be fine despite the
> lack of feedback from LSI.
> 
> Pravin, that ioremap definitely seems like it has nothing to do there,
> port IO is already remapped for you by the core PCI code and should
> work
> "as is". Please respin without that change.
> 
> Cheers,
> Ben.
> 

Thanks for the input. Will make the suggested changes and re-submit patch.
Regards,
Pravin


More information about the Linuxppc-dev mailing list