From: Markus Lidel The I2O subsystem currently map all memory from the I2O controller for the controller's in queue, even if it is not necessary. This is a problem, because on some systems the size returned from pci_resource_len() could be 128MB and only 1-4MB is needed. Changes: -------- - only ioremap as much memory as the controller is actually using. Signed-off-by: Andrew Morton --- 25-akpm/drivers/message/i2o/pci.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+) diff -puN drivers/message/i2o/pci.c~reduce-ioremap-memory-size-for-adaptec-i2o-controllers drivers/message/i2o/pci.c --- 25/drivers/message/i2o/pci.c~reduce-ioremap-memory-size-for-adaptec-i2o-controllers Wed Sep 15 14:42:05 2004 +++ 25-akpm/drivers/message/i2o/pci.c Wed Sep 15 14:42:05 2004 @@ -133,6 +133,21 @@ static int __devinit i2o_pci_alloc(struc if (!c->base.phys) { c->base.phys = pci_resource_start(pdev, i); c->base.len = pci_resource_len(pdev, i); + + /* + * If we know what card it is, set the size + * correctly. Code is taken from dpt_i2o.c + */ + if(pdev->device == 0xa501) { + if(pdev->subsystem_device >= 0xc032 && + pdev->subsystem_device <= 0xc03b) { + if(c->base.len > 0x400000) + c->base.len = 0x400000; + } else { + if(c->base.len > 0x100000) + c->base.len = 0x100000; + } + } if (!c->raptor) break; } else { _