[IA64-SGI] fix SGI Altix tioce_reserve_m32() bug
authorMike Habeck <habeck@sgi.com>
Wed, 26 Apr 2006 17:05:50 +0000 (12:05 -0500)
committerTony Luck <tony.luck@intel.com>
Thu, 27 Apr 2006 21:32:07 +0000 (14:32 -0700)
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>
arch/ia64/sn/pci/tioce_provider.c

index fa073cc4b565fc6dbf535cfdbe32fec1e7aa8b28..833295624e5df3acd2284ef8d10e7226c037c513 100644 (file)
@@ -682,9 +682,6 @@ tioce_reserve_m32(struct tioce_kernel *ce_kern, u64 base, u64 limit)
        int ate_index, last_ate, ps;
        struct tioce *ce_mmr;
 
-       if (!TIOCE_M32_ADDR(base))
-               return;
-
        ce_mmr = (struct tioce *)ce_kern->ce_common->ce_pcibus.bs_base;
        ps = ce_kern->ce_ate3240_pagesize;
        ate_index = ATE_PAGE(base, ps);
@@ -693,6 +690,9 @@ tioce_reserve_m32(struct tioce_kernel *ce_kern, u64 base, u64 limit)
        if (ate_index < 64)
                ate_index = 64;
 
+       if (last_ate >= TIOCE_NUM_M3240_ATES)
+               last_ate = TIOCE_NUM_M3240_ATES - 1;
+
        while (ate_index <= last_ate) {
                u64 ate;