diff options
| author | Vitaly Kuznetsov <[email protected]> | 2014-08-08 14:22:05 -0700 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2014-08-08 15:57:23 -0700 |
| commit | 0692dedcf64bf3cdcfb9f6a51c70d49c8db351d2 (patch) | |
| tree | bddf505939396658f60fd594f9281456ac4eb9e1 /tools/perf/scripts/python/event_analyzing_sample.py | |
| parent | 33144e8429bd7fceacbb869a7f5061db42e13fe6 (diff) | |
fs/proc/vmcore.c:mmap_vmcore: skip non-ram pages reported by hypervisors
We have a special check in read_vmcore() handler to check if the page was
reported as ram or not by the hypervisor (pfn_is_ram()). However, when
vmcore is read with mmap() no such check is performed. That can lead to
unpredictable results, e.g. when running Xen PVHVM guest memcpy() after
mmap() on /proc/vmcore will hang processing HVMMEM_mmio_dm pages creating
enormous load in both DomU and Dom0.
Fix the issue by mapping each non-ram page to the zero page. Keep direct
path with remap_oldmem_pfn_range() to avoid looping through all pages on
bare metal.
The issue can also be solved by overriding remap_oldmem_pfn_range() in
xen-specific code, as remap_oldmem_pfn_range() was been designed for.
That, however, would involve non-obvious xen code path for all x86 builds
with CONFIG_XEN_PVHVM=y and would prevent all other hypervisor-specific
code on x86 arch from doing the same override.
[[email protected]: remap_oldmem_pfn_checked() can be static]
[[email protected]: clean up layout]
Signed-off-by: Vitaly Kuznetsov <[email protected]>
Reviewed-by: Andrew Jones <[email protected]>
Cc: Michael Holzheu <[email protected]>
Acked-by: Vivek Goyal <[email protected]>
Cc: David Vrabel <[email protected]>
Signed-off-by: Fengguang Wu <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/event_analyzing_sample.py')
0 files changed, 0 insertions, 0 deletions