The following patch fixes a crash seen in 2.6.32 or later on Sibyte CPUs
with 64 bit kernel, page size configured to 16k or 64k, and IPV6 enabled.
The problem is that VMALLOC_END is calculated to utilize more virtual memory
bits than available on Sibyte CPUs. This causes a crash during boot.
Fix is to introduce an absolute and page size independent virtual memory
size limit which can be overridden per CPU type.
The problem was probably never seen before because no one tested the limits.
It is seen in 2.6.32 and later due to redesigned percpu memory allocation,
which attempts to allocate memory at the upper limit of virtual memory space.
The fix was verified on a bcm1480 based system with all configurable page sizes
(4k, 16k, 64k).
Open questions are
- Does the default virtual memory limit of 60 bits make sense ?
- Are there any other CPUs with known limitations which we could/should add
to this patch ?