diff options
author | Mike Habeck <habeck@sgi.com> | 2006-04-26 13:05:50 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2006-04-27 17:32:07 -0400 |
commit | cda3d4a069b915cf46e640bb6872a9d9aefeaabe (patch) | |
tree | f7022fceac378d444761da3f22e729d348482cf2 /arch/ia64/sn/pci/tioce_provider.c | |
parent | 1df57c0c21c92a6d4fcfe5304c84151ed9beb7a2 (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/ia64/sn/pci/tioce_provider.c')
-rw-r--r-- | arch/ia64/sn/pci/tioce_provider.c | 6 |
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 fa073cc4b56..833295624e5 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 | ||