powerpc/mm: Fix hang accessing top of vmalloc space
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 12 Oct 2009 20:43:47 +0000 (20:43 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 14 Oct 2009 05:58:36 +0000 (16:58 +1100)
commit8d8997f34e66124577db52f6e7ee10ab5f869e07
treecfca0e3e7251d1a36b311283772725589822b93d
parentaee7a283bb1e7d722f3431e0689c2c281ad0c1f6
powerpc/mm: Fix hang accessing top of vmalloc space

On pSeries, we always force the IO space to be mapped using 4K
pages even with a 64K base page size to cope with some limitations
in the HV interface to some devices.

However, the SLB miss handler code to discriminate between vmalloc
and ioremap space uses a CPU feature section such that the code
is nop'ed out when the processor support large pages non-cachable
mappings.

Thus, we end up always using the ioremap page size for vmalloc
segments on such processors, causing a discrepency between the
segment and the hash table, and thus a hang continously hashing
the page.

It works for the first segment of the vmalloc space since that
segment is "bolted" in by C code correctly, and thankfully we
almost never use the vmalloc space beyond the first segment,
but the new percpu code made the bug happen.

This fixes it by removing the feature section from the assembly,
we now always do the comparison between vmalloc and ioremap.

Signed-off-by; Benjamin Herrenschmidt <benh@kernel.crashing.org>

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/mm/slb_low.S