[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 4/8] pdx: introduce command line compression toggle
Introduce a command line option to allow disabling PDX compression. The disabling is done by turning pfn_pdx_add_region() into a no-op, so when attempting to initialize the selected compression algorithm the array of ranges to compress is empty. Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxx> --- Changes since v1: - New in this version. --- docs/misc/xen-command-line.pandoc | 9 +++++++++ xen/common/pdx.c | 10 +++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc index b0eadd2c5d58..c747a326be86 100644 --- a/docs/misc/xen-command-line.pandoc +++ b/docs/misc/xen-command-line.pandoc @@ -2072,6 +2072,15 @@ for all of them (`true`), only for those subject to XPTI (`xpti`) or for those not subject to XPTI (`no-xpti`). The feature is used only in case INVPCID is supported and not disabled via `invpcid=false`. +### pdx-compress +> `= <boolean>` + +> Default: `true` if CONFIG_PDX_NONE is unset + +Only relevant when the hypervisor is build with PFN PDX compression. Controls +whether Xen will engage in PFN compression. The algorithm used for PFN +compression is selected at build time from Kconfig. + ### ple_gap > `= <integer>` diff --git a/xen/common/pdx.c b/xen/common/pdx.c index 6f488366e5a9..8c107676da59 100644 --- a/xen/common/pdx.c +++ b/xen/common/pdx.c @@ -19,6 +19,7 @@ #include <xen/mm.h> #include <xen/bitops.h> #include <xen/nospec.h> +#include <xen/param.h> #include <xen/pfn.h> #include <xen/sections.h> @@ -76,9 +77,13 @@ static struct pfn_range { } ranges[MAX_PFN_RANGES] __initdata; static unsigned int __initdata nr_ranges; +static bool __initdata pdx_compress = true; +boolean_param("pdx-compress", pdx_compress); + void __init pfn_pdx_add_region(paddr_t base, paddr_t size) { - if ( !size ) + /* Without ranges there's no PFN compression. */ + if ( !size || !pdx_compress ) return; if ( nr_ranges >= ARRAY_SIZE(ranges) ) @@ -215,6 +220,9 @@ void __init pfn_pdx_compression_setup(paddr_t base) unsigned int i, j, bottom_shift = 0, hole_shift = 0; unsigned long mask = pdx_init_mask(base) >> PAGE_SHIFT; + if ( !nr_ranges ) + return; + if ( nr_ranges > ARRAY_SIZE(ranges) ) { printk(XENLOG_WARNING -- 2.49.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |