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...