People,

On PARISC, kernel screams if a driver uses ioremap on an io-port
region. It now strongly insists on using ioremap_nocache, which sounds
sensible enough since, in this case, cassini wants to map the card
registers.

The included one-line patch fixes it.

Please consider applying.

        M.

cassini.c:v1.4 (1 July 2004)
ERROR: ioremap(fffffffffb200000) on I/O-space without _PAGE_NO_CACHE
flag.
ERROR: Please fix the driver to use ioremap_nocache().
Backtrace:
 [<000000001010f5dc>] __ioremap+0x394/0x4f8
 [<000000000017e070>] cas_init_one+0x388/0x1080 [cassini]
 [<00000000102633cc>] pci_device_probe+0x9c/0xd0
 [<00000000102a9c30>] driver_probe_device+0x78/0x130
 [<00000000102a9f30>] __driver_attach+0x108/0x138
 [<00000000102a8a5c>] bus_for_each_dev+0x7c/0xd0
 [<00000000102a9f88>] driver_attach+0x28/0x38
 [<00000000102a9334>] bus_add_driver+0xcc/0x1f0
 [<00000000102aa688>] driver_register+0x90/0xd8
 [<00000000102630ec>] __pci_register_driver+0x54/0xa0
 [<000000000003a070>] cas_init+0x50/0x90 [cassini]

eth1: Sun Cassini+ (64bit/33MHz PCI/Cu) Ethernet[22] 00:03:ba:0f:63:5c

ERROR: ioremap(fffffffffb000000) on I/O-space without _PAGE_NO_CACHE
flag.
ERROR: Please fix the driver to use ioremap_nocache().
Backtrace:
 [<000000001010f5dc>] __ioremap+0x394/0x4f8
 [<000000000017e070>] cas_init_one+0x388/0x1080 [cassini]
 [<00000000102633cc>] pci_device_probe+0x9c/0xd0
 [<00000000102a9c30>] driver_probe_device+0x78/0x130
 [<00000000102a9f30>] __driver_attach+0x108/0x138
 [<00000000102a8a5c>] bus_for_each_dev+0x7c/0xd0
 [<00000000102a9f88>] driver_attach+0x28/0x38
 [<00000000102a9334>] bus_add_driver+0xcc/0x1f0
 [<00000000102aa688>] driver_register+0x90/0xd8
 [<00000000102630ec>] __pci_register_driver+0x54/0xa0
 [<000000000003a070>] cas_init+0x50/0x90 [cassini]

eth2: Sun Cassini+ (64bit/33MHz PCI/Cu) Ethernet[23] 00:03:ba:0f:63:5d

diff --git a/drivers/net/cassini.c b/drivers/net/cassini.c
index ac48f75..5e137b0 100644
--- a/drivers/net/cassini.c
+++ b/drivers/net/cassini.c
@@ -5024,7 +5024,7 @@ static int __devinit cas_init_one(struct
 	cp->timer_ticks = 0;
 
 	/* give us access to cassini registers */
-	cp->regs = ioremap(casreg_base, casreg_len);
+	cp->regs = ioremap_nocache(casreg_base, casreg_len);
 	if (cp->regs == 0UL) {
 		printk(KERN_ERR PFX "Cannot map device registers, "
 		       "aborting.\n");
-- 
And if you don't know where you're going, any road will take you there...

Reply via email to