From: Josh Boyer <jwboyer@linux.vnet.ibm.com>
To: James.Bottomley@HansenPartnership.com, Eric.Moore@lsi.com
Cc: pbathija@amcc.com, linux-scsi@vger.kernel.org, linuxppc-dev@ozlabs.org
Subject: Re: [PATCH] [SCSI] mpt fusion: Fix 32 bit platforms with 64 bit resources.
Date: Thu, 5 Nov 2009 08:43:30 -0500 [thread overview]
Message-ID: <20091105134330.GA30489@zod.rchland.ibm.com> (raw)
In-Reply-To: <1253053555-25097-1-git-send-email-pbathija@amcc.com>
On Tue, Sep 15, 2009 at 03:25:55PM -0700, pbathija@amcc.com wrote:
>From: Pravin Bathija <pbathija@amcc.com>
>
>Powerpc 44x uses 36 bit real address while the real address defined
>in MPT Fusion driver is of type 32 bit. This causes ioremap to fail and driver
>fails to initialize. This fix changes the data types representing the real
>address from unsigned long 32-bit types to "phys_addr_t" which is 64-bit. The
>driver has been tested, the disks get discovered correctly and can do IO. Also,
>replaced phys_addr_t with resource_size_t as suggested by Ben.
>
>Signed-off-by: Pravin Bathija <pbathija@amcc.com>
>Acked-by: Feng Kan <fkan@amcc.com>
>Acked-by: Prodyut Hazarika <phazarika@amcc.com>
>Acked-by: Loc Ho <lho@amcc.com>
>Acked-by: Tirumala Reddy Marri <tmarri@amcc.com>
>Acked-by: Victor Gallardo <vgallardo@amcc.com>
Is this patch included in the scsi tree at all? I can't seem to find it in
linux-next and I know it's not in the powerpc tree. Are there further changes
needed, or has it simply been missed?
josh
>
>---
> drivers/message/fusion/mptbase.c | 34 +++++++++++++++++++++++++---------
> drivers/message/fusion/mptbase.h | 5 +++--
> 2 files changed, 28 insertions(+), 11 deletions(-)
>
>diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
>index 5d496a9..e296f2e 100644
>--- a/drivers/message/fusion/mptbase.c
>+++ b/drivers/message/fusion/mptbase.c
>@@ -1510,11 +1510,12 @@ static int
> mpt_mapresources(MPT_ADAPTER *ioc)
> {
> u8 __iomem *mem;
>+ u8 __iomem *port;
> int ii;
>- unsigned long mem_phys;
>- unsigned long port;
>- u32 msize;
>- u32 psize;
>+ resource_size_t mem_phys;
>+ resource_size_t port_phys;
>+ resource_size_t msize;
>+ resource_size_t psize;
> u8 revision;
> int r = -ENODEV;
> struct pci_dev *pdev;
>@@ -1552,13 +1553,13 @@ mpt_mapresources(MPT_ADAPTER *ioc)
> }
>
> mem_phys = msize = 0;
>- port = psize = 0;
>+ port_phys = psize = 0;
> for (ii = 0; ii < DEVICE_COUNT_RESOURCE; ii++) {
> if (pci_resource_flags(pdev, ii) & PCI_BASE_ADDRESS_SPACE_IO) {
> if (psize)
> continue;
> /* Get I/O space! */
>- port = pci_resource_start(pdev, ii);
>+ port_phys = pci_resource_start(pdev, ii);
> psize = pci_resource_len(pdev, ii);
> } else {
> if (msize)
>@@ -1580,14 +1581,23 @@ mpt_mapresources(MPT_ADAPTER *ioc)
> return -EINVAL;
> }
> 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;
>+ }
>+ ioc->portmap = port;
>+ dinitprintk(ioc, printk(MYIOC_s_INFO_FMT "port=%p, port_phys=%llx\n",
>+ ioc->name, port, (u64)port_phys));
>+ ioc->pio_mem_phys = port_phys;
> ioc->pio_chip = (SYSIF_REGS __iomem *)port;
>
> return 0;
>@@ -1822,6 +1832,7 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
> if (ioc->alt_ioc)
> ioc->alt_ioc->alt_ioc = NULL;
> iounmap(ioc->memmap);
>+ iounmap(ioc->portmap);
> if (r != -5)
> pci_release_selected_regions(pdev, ioc->bars);
>
>@@ -2583,6 +2594,11 @@ mpt_adapter_dispose(MPT_ADAPTER *ioc)
> ioc->memmap = NULL;
> }
>
>+ if (ioc->portmap != NULL) {
>+ iounmap(ioc->portmap);
>+ ioc->portmap = NULL;
>+ }
>+
> pci_disable_device(ioc->pcidev);
> pci_release_selected_regions(ioc->pcidev, ioc->bars);
>
>diff --git a/drivers/message/fusion/mptbase.h b/drivers/message/fusion/mptbase.h
>index b3e981d..7091f13 100644
>--- a/drivers/message/fusion/mptbase.h
>+++ b/drivers/message/fusion/mptbase.h
>@@ -584,8 +584,8 @@ typedef struct _MPT_ADAPTER
> SYSIF_REGS __iomem *chip; /* == c8817000 (mmap) */
> SYSIF_REGS __iomem *pio_chip; /* Programmed IO (downloadboot) */
> u8 bus_type;
>- u32 mem_phys; /* == f4020000 (mmap) */
>- u32 pio_mem_phys; /* Programmed IO (downloadboot) */
>+ resource_size_t mem_phys; /* == f4020000 (mmap) */
>+ resource_size_t pio_mem_phys; /* Programmed IO (downloadboot) */
> int mem_size; /* mmap memory size */
> int number_of_buses;
> int devices_per_bus;
>@@ -635,6 +635,7 @@ typedef struct _MPT_ADAPTER
> int bars; /* bitmask of BAR's that must be configured */
> int msi_enable;
> u8 __iomem *memmap; /* mmap address */
>+ u8 __iomem *portmap; /* mmap port address */
> struct Scsi_Host *sh; /* Scsi Host pointer */
> SpiCfgData spi_data; /* Scsi config. data */
> RaidCfgData raid_data; /* Raid config. data */
>--
>1.5.5
>
>_______________________________________________
>Linuxppc-dev mailing list
>Linuxppc-dev@lists.ozlabs.org
>https://lists.ozlabs.org/listinfo/linuxppc-dev
next prev parent reply other threads:[~2009-11-05 13:43 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-15 22:25 [PATCH] [SCSI] mpt fusion: Fix 32 bit platforms with 64 bit resources pbathija
2009-11-05 13:43 ` Josh Boyer [this message]
2009-11-05 16:07 ` James Bottomley
2009-11-05 16:25 ` Josh Boyer
2009-11-05 20:00 ` Benjamin Herrenschmidt
2009-11-06 4:59 ` Desai, Kashyap
2009-11-06 5:49 ` Pravin Bathija
2009-11-06 5:57 ` Pravin Bathija
-- strict thread matches above, loose matches on Subject: below --
2009-12-03 1:51 Pravin Bathija
2009-12-03 2:59 ` Benjamin Herrenschmidt
2009-12-03 5:26 ` Desai, Kashyap
2009-12-03 8:56 ` Wolfgang Denk
2009-12-03 23:21 ` Pravin Bathija
2009-12-03 23:48 ` Benjamin Herrenschmidt
2009-12-10 15:43 ` James Bottomley
2009-12-10 16:36 ` Anatolij Gustschin
2009-11-18 0:16 pbathija
2009-11-18 5:41 ` Benjamin Herrenschmidt
2009-09-09 0:15 pbathija
2009-09-15 10:29 ` Benjamin Herrenschmidt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20091105134330.GA30489@zod.rchland.ibm.com \
--to=jwboyer@linux.vnet.ibm.com \
--cc=Eric.Moore@lsi.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=linux-scsi@vger.kernel.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=pbathija@amcc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).