[PATCH v3 0/2] arm64: ptdump flush fixes
Wei-Lin Chang <[email protected]>
| Newsgroups | dev.linux.lists.kvmarm,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi,
This series fixes two problems around ptdumps:
1. note_page_flush(), which flushes out the last row of ptdumps, does
not account for address spaces that have IA < 64. Other than making
the last region extremely huge, the attributes of the last region
within the address spaces appear to extend all the way to 1 << 64.
2. KVM/arm64's stage-2 ptdump missed calling note_page_flush().
To address Will's comment [1], I have created an end_address field for
struct ptdump_pg_state, and initialized it with the end address of the
ptdumps. It follows the same convention as the last range->end:
exclusive end, except for the case where the address space ends at
1 << 64. In that case it is set as ULONG_MAX.
Caching the end address avoids duplicating the range iteration in
note_page_flush(), at the cost of duplicating state in ptdump_pg_state.
Series is based on v7.2-rc5.
* Changes from v2:
- Instead of scanning ptdump_state.range[] to find the end address,
cache the end address in a new field end_address when we initialize
struct ptdump_pg_state.
- Adjust KVM's struct ptdump_pg_state initialization so it uses
end_address instead of ptdump_state.range[].
- Collected Reviewed-by and Tested-by from Dev, thanks!
- v2: https://lore.kernel.org/r/[email protected]/
* Changes from v1:
- Instead of manually calling note_page() for flushing, fix
note_page_flush() so that it ends the ptdump at the end of the
address space.
- Changed the start address of the second marker to ULONG_MAX for KVM
ptdump, so we don't output extra marker names, and advance past the
end of the marker array.
- v1: https://lore.kernel.org/r/[email protected]/
Thanks!
[1]: https://lore.kernel.org/r/anXFo-igVdqrCogQ@willie-the-truck/
Wei-Lin Chang (2):
arm64: ptdump: Make note_page_flush() range aware
KVM: arm64: ptdump: Flush the last region
arch/arm64/include/asm/ptdump.h | 2 ++
arch/arm64/kvm/ptdump.c | 11 +++++++----
arch/arm64/mm/ptdump.c | 14 +++++++++++++-
3 files changed, 22 insertions(+), 5 deletions(-)
--
2.43.0