Currently there's a CONFIG_HAS_PDX Kconfig option, but it's impossible to
disable it because the whole codebase performs unconditional
compression/decompression operations on addresses. This has the
unfortunate side effect that systems without a need for compression still
have to pay the performance impact of juggling bits on every pfn<->pdx
conversion (this requires reading several global variables). This series
attempts to:
* Leave the state of pdx and pdx compression documented
* Factor out compression so it _can_ be removed through Kconfig
* Make it so compression is disabled on x86 and enabled on both Aarch32
and Aarch64 by default.
Series summary:
Patch 1 makes a clarification in ARM code to explain some discrepancies
between the concept of "directmap" in arm32 and arm64 relevant to
this series (i.e: why this series doesn't touch arm32 in directmap
accesses).
Patch 2 Moves hard-coded compression-related logic to helper functions
Patch 3 Refactors all instances of regions being validated for pdx
compression conformance so it's done through a helper
Patch 4 Non-functional reorder in order to simplify the patch 8 diff
Patch 5 Adds new Kconfig option to compile out PDX compression and removes
the old CONFIG_HAS_PDX, as it was non removable
Already committed:
v1/patch 1 documents the current general understanding of the pdx concept and
pdx compression in particular
v1/patch 3 Marks the pdx compression globals as ro_after_init
Alejandro Vallejo (5):
arm/mm: Document the differences between arm32 and arm64 directmaps
mm: Factor out the pdx compression logic in ma/va converters
mm/pdx: Standardize region validation wrt pdx compression
pdx: Reorder pdx.[ch]
pdx: Add CONFIG_HAS_PDX_COMPRESSION as a common Kconfig option
xen/arch/arm/Kconfig | 1 -
xen/arch/arm/include/asm/mm.h | 29 +++++-
xen/arch/x86/Kconfig | 1 -
xen/arch/x86/domain.c | 19 ++--
xen/arch/x86/include/asm/x86_64/page.h | 28 +++---
xen/arch/x86/x86_64/mm.c | 7 +-
xen/common/Kconfig | 13 ++-
xen/common/Makefile | 2 +-
xen/common/efi/boot.c | 13 ++-
xen/common/pdx.c | 75 +++++++++------
xen/include/xen/pdx.h | 126 +++++++++++++++++++------
11 files changed, 218 insertions(+), 96 deletions(-)
--
2.34.1