aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergei Shtylyov <sshtylyov@ru.mvista.com>2008-04-12 21:30:58 -0400
committerDavid S. Miller <davem@davemloft.net>2008-04-12 21:30:58 -0400
commit2de58e30db3f7e83592e22fb459dd6695b648889 (patch)
treeea4bb850d897aaccb86c9a5b155761b453be0957
parent16a79142e51f9eedbf3ae9a20d9cdb2f88c86acc (diff)
tg3: fix MMIO for PPC 44x platforms
The driver stores the PCI resource addresses into 'unsigned long' variable before calling ioremap_nocache() on them. This warrants kernel oops when the registers are accessed on PPC 44x platforms which (being 32-bit) have PCI memory space mapped beyond 4 GB. The arch/ppc/ kernel has a fixup in ioremap() that creates an illusion that the PCI memory resource is mapped below 4 GB, but arch/powerpc/ code got rid of this trick, having instead CONFIG_RESOURCES_64BIT enabled. [ Bump driver version and release date -DaveM ] Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/tg3.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index d4655b2d1f3f..96043c5746d0 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -64,8 +64,8 @@
64 64
65#define DRV_MODULE_NAME "tg3" 65#define DRV_MODULE_NAME "tg3"
66#define PFX DRV_MODULE_NAME ": " 66#define PFX DRV_MODULE_NAME ": "
67#define DRV_MODULE_VERSION "3.89" 67#define DRV_MODULE_VERSION "3.90"
68#define DRV_MODULE_RELDATE "April 03, 2008" 68#define DRV_MODULE_RELDATE "April 12, 2008"
69 69
70#define TG3_DEF_MAC_MODE 0 70#define TG3_DEF_MAC_MODE 0
71#define TG3_DEF_RX_MODE 0 71#define TG3_DEF_RX_MODE 0
@@ -12578,7 +12578,8 @@ static int __devinit tg3_init_one(struct pci_dev *pdev,
12578 const struct pci_device_id *ent) 12578 const struct pci_device_id *ent)
12579{ 12579{
12580 static int tg3_version_printed = 0; 12580 static int tg3_version_printed = 0;
12581 unsigned long tg3reg_base, tg3reg_len; 12581 resource_size_t tg3reg_base;
12582 unsigned long tg3reg_len;
12582 struct net_device *dev; 12583 struct net_device *dev;
12583 struct tg3 *tp; 12584 struct tg3 *tp;
12584 int err, pm_cap; 12585 int err, pm_cap;