aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorPetr Vandrovec <petr@vmware.com>2006-01-11 14:31:07 -0500
committerJames Bottomley <jejb@mulgrave.(none)>2006-01-12 16:26:13 -0500
commit745caf71d99c5d4ff4c9e4c0f74e64c429fed531 (patch)
treed03b234d62a611a2d2f29aeac9b13efee0bd5c5c /drivers
parentcd2f1e6980157638f66f427d577a1c368fd4dc12 (diff)
[SCSI] Pass proper device from BusLogic to SCSI layer
While trying to get SUSE's SLES9 working on system with more than 4GB we've noticed that SCSI layer happilly passes addresses over 4GB to the buslogic driver, which is quite a big problem as buslogic can generate only 32bit busmastering cycles. Fortunately in the current kernels this problem does not exist anymore as SCSI layer now assumes 4GB capable device by default, but it is still good idea to pass correct device structure to the SCSI layer. If nothing else, /sys/block/sda/device now points to /sys/devices/pci0000:00/0000:00:10.0/host0/... instead of /sys/devices/platform/host0/... like it did in the past. Change does nothing for ISA based BusLogic adapters, they'll still end under platform (and they are probably broken for long time as I do not see anything forcing ISA 16MB limit for them). Signed-off-by: Petr Vandrovec <petr@vmware.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/BusLogic.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/scsi/BusLogic.c b/drivers/scsi/BusLogic.c
index 9d6040bfa064..1c459343292b 100644
--- a/drivers/scsi/BusLogic.c
+++ b/drivers/scsi/BusLogic.c
@@ -2216,6 +2216,7 @@ static int __init BusLogic_init(void)
2216 HostAdapter->PCI_Address = ProbeInfo->PCI_Address; 2216 HostAdapter->PCI_Address = ProbeInfo->PCI_Address;
2217 HostAdapter->Bus = ProbeInfo->Bus; 2217 HostAdapter->Bus = ProbeInfo->Bus;
2218 HostAdapter->Device = ProbeInfo->Device; 2218 HostAdapter->Device = ProbeInfo->Device;
2219 HostAdapter->PCI_Device = ProbeInfo->PCI_Device;
2219 HostAdapter->IRQ_Channel = ProbeInfo->IRQ_Channel; 2220 HostAdapter->IRQ_Channel = ProbeInfo->IRQ_Channel;
2220 HostAdapter->AddressCount = BusLogic_HostAdapterAddressCount[HostAdapter->HostAdapterType]; 2221 HostAdapter->AddressCount = BusLogic_HostAdapterAddressCount[HostAdapter->HostAdapterType];
2221 /* 2222 /*
@@ -2296,7 +2297,7 @@ static int __init BusLogic_init(void)
2296 scsi_host_put(Host); 2297 scsi_host_put(Host);
2297 } else { 2298 } else {
2298 BusLogic_InitializeHostStructure(HostAdapter, Host); 2299 BusLogic_InitializeHostStructure(HostAdapter, Host);
2299 scsi_add_host(Host, NULL); 2300 scsi_add_host(Host, HostAdapter->PCI_Device ? &HostAdapter->PCI_Device->dev : NULL);
2300 scsi_scan_host(Host); 2301 scsi_scan_host(Host);
2301 BusLogicHostAdapterCount++; 2302 BusLogicHostAdapterCount++;
2302 } 2303 }