OSDN Git Service

sparc: Make sure we mmap at SHMLBA alignment
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 8 Dec 2017 16:57:28 +0000 (16:57 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 15 Dec 2017 15:26:24 +0000 (15:26 +0000)
commit57d1f6d7ce23e79a8ebe4a57bd2363b269b4664b
tree5a74de3c4f6909c2ebc69e725f6629732a18f071
parenta7cf5391a4a13eb63ec3b2da95cc33a762649d80
sparc: Make sure we mmap at SHMLBA alignment

SPARC Linux has an oddity that it insists that mmap()
of MAP_FIXED memory must be at an alignment defined by
SHMLBA, which is more aligned than the page size
(typically, SHMLBA alignment is to 16K, and pages are 8K).
This is a relic of ancient hardware that had cache
aliasing constraints, but even on modern hardware the
kernel still insists on the alignment.

To ensure that we get mmap() alignment sufficient to
make the kernel happy, change QEMU_VMALLOC_ALIGN,
qemu_fd_getpagesize() and qemu_mempath_getpagesize()
to use the maximum of getpagesize() and SHMLBA.

In particular, this allows 'make check' to pass on Sparc:
we were previously failing the ivshmem tests.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 1512752248-17857-1-git-send-email-peter.maydell@linaro.org
include/qemu/osdep.h
util/mmap-alloc.c