diff options
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/cciss.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index 9a4869572a0..b4264bcda61 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c | |||
@@ -4108,6 +4108,18 @@ static inline bool CISS_signature_present(ctlr_info_t *h) | |||
4108 | return true; | 4108 | return true; |
4109 | } | 4109 | } |
4110 | 4110 | ||
4111 | /* Need to enable prefetch in the SCSI core for 6400 in x86 */ | ||
4112 | static inline void cciss_enable_scsi_prefetch(ctlr_info_t *h) | ||
4113 | { | ||
4114 | #ifdef CONFIG_X86 | ||
4115 | u32 prefetch; | ||
4116 | |||
4117 | prefetch = readl(&(h->cfgtable->SCSI_Prefetch)); | ||
4118 | prefetch |= 0x100; | ||
4119 | writel(prefetch, &(h->cfgtable->SCSI_Prefetch)); | ||
4120 | #endif | ||
4121 | } | ||
4122 | |||
4111 | static int __devinit cciss_pci_init(ctlr_info_t *c) | 4123 | static int __devinit cciss_pci_init(ctlr_info_t *c) |
4112 | { | 4124 | { |
4113 | int prod_index, err; | 4125 | int prod_index, err; |
@@ -4169,16 +4181,7 @@ static int __devinit cciss_pci_init(ctlr_info_t *c) | |||
4169 | err = -ENODEV; | 4181 | err = -ENODEV; |
4170 | goto err_out_free_res; | 4182 | goto err_out_free_res; |
4171 | } | 4183 | } |
4172 | #ifdef CONFIG_X86 | 4184 | cciss_enable_scsi_prefetch(c); |
4173 | { | ||
4174 | /* Need to enable prefetch in the SCSI core for 6400 in x86 */ | ||
4175 | __u32 prefetch; | ||
4176 | prefetch = readl(&(c->cfgtable->SCSI_Prefetch)); | ||
4177 | prefetch |= 0x100; | ||
4178 | writel(prefetch, &(c->cfgtable->SCSI_Prefetch)); | ||
4179 | } | ||
4180 | #endif | ||
4181 | |||
4182 | /* Disabling DMA prefetch and refetch for the P600. | 4185 | /* Disabling DMA prefetch and refetch for the P600. |
4183 | * An ASIC bug may result in accesses to invalid memory addresses. | 4186 | * An ASIC bug may result in accesses to invalid memory addresses. |
4184 | * We've disabled prefetch for some time now. Testing with XEN | 4187 | * We've disabled prefetch for some time now. Testing with XEN |