qemu-e2k/include/qemu
Murilo Opsfelder Araujo 53adb9d43e mmap-alloc: fix hugetlbfs misaligned length in ppc64
The commit 7197fb4058 ("util/mmap-alloc:
fix hugetlb support on ppc64") fixed Huge TLB mappings on ppc64.

However, we still need to consider the underlying huge page size
during munmap() because it requires that both address and length be a
multiple of the underlying huge page size for Huge TLB mappings.
Quote from "Huge page (Huge TLB) mappings" paragraph under NOTES
section of the munmap(2) manual:

  "For munmap(), addr and length must both be a multiple of the
  underlying huge page size."

On ppc64, the munmap() in qemu_ram_munmap() does not work for Huge TLB
mappings because the mapped segment can be aligned with the underlying
huge page size, not aligned with the native system page size, as
returned by getpagesize().

This has the side effect of not releasing huge pages back to the pool
after a hugetlbfs file-backed memory device is hot-unplugged.

This patch fixes the situation in qemu_ram_mmap() and
qemu_ram_munmap() by considering the underlying page size on ppc64.

After this patch, memory hot-unplug releases huge pages back to the
pool.

Fixes: 7197fb4058
Signed-off-by: Murilo Opsfelder Araujo <muriloo@linux.ibm.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-02-04 18:44:20 +11:00
..
acl.h avoid TABs in files that only contain a few 2019-01-11 15:46:56 +01:00
atomic.h atomics: Set ATOMIC_REG_SIZE=8 for MIPS n32 2019-01-03 17:52:52 +01:00
atomic128.h tcg: Split CONFIG_ATOMIC128 2018-10-18 19:46:36 -07:00
base64.h
bcd.h
bitmap.h
bitops.h
bswap.h bswap: Add new stn_*_p() and ldn_*_p() memory access functions 2018-06-15 15:23:34 +01:00
buffer.h
compiler.h linux-user: Fix compilation with clang 3.4 2019-01-22 06:26:31 +01:00
config-file.h Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
coroutine.h block: Add missing locking in bdrv_co_drain_bh_cb() 2018-09-25 15:50:15 +02:00
coroutine_int.h coroutine: avoid co_queue_wakeup recursion 2018-03-27 13:05:28 +01:00
cpuid.h
crc32c.h
cutils.h cutils: Fix qemu_strtosz() & friends to reject non-finite sizes 2018-12-13 19:10:06 +01:00
drm.h util: promote qemu_egl_rendernode_open() to libqemuutil 2018-08-27 10:51:44 +02:00
envlist.h
error-report.h qemu-error: make use of {error, warn}_report_once_cond 2018-09-24 17:13:07 +02:00
event_notifier.h Revert "qemu: add a cleanup callback function to EventNotifier" 2018-01-24 19:20:19 +02:00
fifo8.h
fifo32.h
fprintf-fn.h
futex.h
hbitmap.h Revert "hbitmap: Add @advance param to hbitmap_iter_next()" 2019-01-15 18:26:50 -05:00
help_option.h
host-utils.h includes: Replace QEMU_GNUC_PREREQ with "__has_builtin || !defined(__clang__)" 2018-12-12 10:01:13 +01:00
id.h
int128.h
iov.h avoid TABs in files that only contain a few 2019-01-11 15:46:56 +01:00
iova-tree.h util: remove redundant include of glib.h and add osdep.h 2018-06-29 12:22:28 +01:00
jhash.h
job.h blockjob: Lie better in child_job_drained_poll() 2018-09-25 15:50:15 +02:00
lockable.h lockable: workaround GCC link issue with ASAN 2018-03-06 14:01:27 +01:00
log-for-trace.h log-for-trace.h: Split out parts of log.h used by trace.h 2018-03-12 11:10:20 +00:00
log.h tcg: Optionally log FPU state in TCG -d cpu logging 2018-05-15 14:58:44 +01:00
main-loop.h qsp: track BQL callers explicitly 2018-08-23 18:46:25 +02:00
memfd.h hostmem-memfd: add checks before adding hostmem-memfd & properties 2018-10-02 18:47:55 +02:00
mmap-alloc.h mmap-alloc: fix hugetlbfs misaligned length in ppc64 2019-02-04 18:44:20 +11:00
module.h xen: add a mechanism to automatically create XenDevice-s... 2019-01-14 13:45:40 +00:00
notify.h
option.h option: Make option help nicer to read 2018-11-05 15:17:48 +01:00
option_int.h qemu/queue.h: simplify reverse access to QTAILQ 2019-01-11 15:46:55 +01:00
osdep.h qemu-io: Add generic function for reinitializing optind. 2019-01-31 00:38:19 +01:00
path.h
pmem.h migration/ram: ensure write persistence on loading all data to PMEM. 2018-08-10 13:29:39 +03:00
processor.h Drop remaining bits of ia64 host support 2018-02-05 18:09:45 +01:00
qdist.h
qht.h qht: constify qht_statistics_init 2018-09-26 08:55:54 -07:00
qsp.h qsp: support call site coalescing 2018-08-23 18:46:25 +02:00
queue.h qemu/queue.h: simplify reverse access to QTAILQ 2019-01-11 15:46:55 +01:00
range.h Don't talk about the LGPL if the file is licensed under the GPL 2019-01-30 10:51:20 +01:00
ratelimit.h ratelimit: don't align wait time with slices 2018-02-15 09:39:49 +00:00
rcu.h membarrier: introduce qemu/sys_membarrier.h 2018-03-12 16:12:47 +01:00
rcu_queue.h qemu/queue.h: reimplement QTAILQ without pointer-to-pointers 2019-01-11 15:46:55 +01:00
readline.h readline: add a free function 2018-01-16 14:54:50 +01:00
seqlock.h seqlock: add QemuLockable support 2018-08-23 18:46:25 +02:00
sockets.h sockets: move fd_is_socket() into common sockets code 2018-03-13 18:06:06 +00:00
stats64.h
sys_membarrier.h membarrier: add --enable-membarrier 2018-03-12 16:12:47 +01:00
systemd.h
thread-posix.h qsp: QEMU's Synchronization Profiler 2018-08-23 18:46:25 +02:00
thread-win32.h qsp: QEMU's Synchronization Profiler 2018-08-23 18:46:25 +02:00
thread.h include/qemu/thread.h: Document qemu_thread_atexit* API 2018-11-06 21:35:06 +01:00
throttle-options.h
throttle.h Include less of the generated modular QAPI headers 2018-03-02 13:45:50 -06:00
timed-average.h
timer.h * RTC fixes (Artem) 2018-10-19 19:01:07 +01:00
typedefs.h ui/console: Remove PixelFormat from qemu/typedefs.h 2019-01-22 05:14:33 +01:00
unicode.h json: Reject invalid UTF-8 sequences 2018-08-24 20:26:37 +02:00
units.h block: Eliminate the S_1KiB, S_2KiB, ... macros 2019-02-01 13:46:45 +01:00
uri.h
uuid.h uuid: Make qemu_uuid_bswap() take and return a QemuUUID 2019-02-01 13:46:45 +01:00
vfio-helpers.h Clean up includes 2018-12-20 10:29:08 +01:00
win_dump_defs.h dump: move Windows dump structures definitions 2018-10-02 19:09:12 +02:00
xattr.h
xxhash.h xxhash: match output against the original xxhash32 2018-12-17 06:04:44 +03:00