--- sis1100_linux_init.c	2003-08-07 13:51:38.000000000 +0200
+++ sis1100_linux_init.c.test	2006-03-31 11:29:25.501373000 +0200
@@ -173,15 +173,26 @@
 	sc->plxlocallen1 = pci_resource_len(dev, 3);
 	if (!sc->plxlocallen1) {
             printk(KERN_WARNING "SIS1100: remote space (VME) not mapped."
                                 " BIOS too old?\n");
 	    printk(KERN_WARNING "SIS1100: mmap not available\n");
         } else {
-	    sc->plxlocalbase1 = ioremap(pmembase, sc->plxlocallen1);
-            /*printk(KERN_INFO "SIS1100: plxlocalbase1=0x%08lx\n", pmembase);*/
-	    if (!sc->plxlocalbase1) {
+            do {
+	        sc->plxlocalbase1 = ioremap(pmembase, sc->plxlocallen1);
+                printk(KERN_INFO
+                    "SIS1100: mapping %u Bytes of remote space: %s.\n",
+                    sc->plxlocallen1,
+                    sc->plxlocalbase1?"success":"failed");
+                if (!sc->plxlocalbase1)
+                    sc->plxlocallen1>>=1;
+            } while (!sc->plxlocalbase1 && sc->plxlocallen1>=4096);
+	    if (sc->plxlocalbase1) {
+                printk(KERN_WARNING
+                    "SIS1100: mapped %u Bytes of remote space at 0x%08lx\n",
+                    sc->plxlocallen1, sc->plxlocalbase1);
+            } else {
                 printk(KERN_WARNING "SIS1100: can't map remote space\n");
 	        printk(KERN_WARNING "SIS1100: mmap not available\n");
                 sc->plxlocallen1=0;
             }
         }
 	res = pci_request_regions(dev, "SIS1100");
