diff -urN ref/arch/alpha/kernel/core_tsunami.c 2.4.5pre4aa1/arch/alpha/kernel/core_tsunami.c --- ref/arch/alpha/kernel/core_tsunami.c Tue May 22 18:22:38 2001 +++ 2.4.5pre4aa1/arch/alpha/kernel/core_tsunami.c Tue May 22 18:21:09 2001 @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -367,7 +368,8 @@ * address range. */ hose->sg_isa = iommu_arena_new(hose, 0x00800000, 0x00800000, 0); - hose->sg_pci = iommu_arena_new(hose, 0xc0000000, 0x08000000, 0); + hose->sg_pci = iommu_arena_new(hose, 0xc0000000, 0x40000000, 0); + __direct_map_base = 0x40000000; __direct_map_size = 0x80000000; @@ -383,9 +385,12 @@ pchip->wsm[2].csr = (0x40000000 - 1) & 0xfff00000; pchip->tba[2].csr = 0x40000000; - pchip->wsba[3].csr = hose->sg_pci->dma_base | 3; - pchip->wsm[3].csr = (hose->sg_pci->size - 1) & 0xfff00000; - pchip->tba[3].csr = virt_to_phys(hose->sg_pci->ptes); + if (max_low_pfn > (0x80000000 >> PAGE_SHIFT)) { + pchip->wsba[3].csr = hose->sg_pci->dma_base | 3; + pchip->wsm[3].csr = (hose->sg_pci->size - 1) & 0xfff00000; + pchip->tba[3].csr = virt_to_phys(hose->sg_pci->ptes); + } else + pchip->wsba[3].csr = 0; tsunami_pci_tbi(hose, 0, -1);