diff options
| author | Sergei Shtylyov <sshtylyov@ru.mvista.com> | 2008-04-12 21:30:58 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2008-04-12 21:30:58 -0400 |
| commit | 2de58e30db3f7e83592e22fb459dd6695b648889 (patch) | |
| tree | ea4bb850d897aaccb86c9a5b155761b453be0957 | |
| parent | 16a79142e51f9eedbf3ae9a20d9cdb2f88c86acc (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.c | 7 |
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; |
