aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMike Habeck <habeck@sgi.com>2006-04-26 13:05:50 -0400
committerTony Luck <tony.luck@intel.com>2006-04-27 17:32:07 -0400
commitcda3d4a069b915cf46e640bb6872a9d9aefeaabe (patch)
treef7022fceac378d444761da3f22e729d348482cf2 /arch
parent1df57c0c21c92a6d4fcfe5304c84151ed9beb7a2 (diff)
[IA64-SGI] fix SGI Altix tioce_reserve_m32() bug
The following patch fixes a bug in the SGI Altix tioce_reserve_m32() code. The bug was that we could walking past the end of the CE ASIC 32/40bit PMU ATE Buffer, resulting in a PIO Reply Error. Signed-off-by: Mike Habeck <habeck@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/ia64/sn/pci/tioce_provider.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/ia64/sn/pci/tioce_provider.c b/arch/ia64/sn/pci/tioce_provider.c
index fa073cc4b565..833295624e5d 100644
--- a/arch/ia64/sn/pci/tioce_provider.c
+++ b/arch/ia64/sn/pci/tioce_provider.c
@@ -682,9 +682,6 @@ tioce_reserve_m32(struct tioce_kernel *ce_kern, u64 base, u64 limit)
682 int ate_index, last_ate, ps; 682 int ate_index, last_ate, ps;
683 struct tioce *ce_mmr; 683 struct tioce *ce_mmr;
684 684
685 if (!TIOCE_M32_ADDR(base))
686 return;
687
688 ce_mmr = (struct tioce *)ce_kern->ce_common->ce_pcibus.bs_base; 685 ce_mmr = (struct tioce *)ce_kern->ce_common->ce_pcibus.bs_base;
689 ps = ce_kern->ce_ate3240_pagesize; 686 ps = ce_kern->ce_ate3240_pagesize;
690 ate_index = ATE_PAGE(base, ps); 687 ate_index = ATE_PAGE(base, ps);
@@ -693,6 +690,9 @@ tioce_reserve_m32(struct tioce_kernel *ce_kern, u64 base, u64 limit)
693 if (ate_index < 64) 690 if (ate_index < 64)
694 ate_index = 64; 691 ate_index = 64;
695 692
693 if (last_ate >= TIOCE_NUM_M3240_ATES)
694 last_ate = TIOCE_NUM_M3240_ATES - 1;
695
696 while (ate_index <= last_ate) { 696 while (ate_index <= last_ate) {
697 u64 ate; 697 u64 ate;
698 698