From 79674d07d40919dabd37c2fc1f542f791b9c3162 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Tue, 17 Feb 2026 19:51:03 +1000 Subject: [PATCH] page-vary: Build set_preferred_target_page_bits as common code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use target_info->page_bits_vary to merge set_preferred_target_page_bits_common into set_preferred_target_page_bits in page-vary-common.c. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Message-ID: <20260217095106.598486-5-richard.henderson@linaro.org> Signed-off-by: Philippe Mathieu-Daudé --- include/exec/page-vary.h | 1 - page-vary-common.c | 29 ++++++++++++++++++----------- page-vary-target.c | 10 ---------- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/include/exec/page-vary.h b/include/exec/page-vary.h index 3c77689ca5..c4dc56634b 100644 --- a/include/exec/page-vary.h +++ b/include/exec/page-vary.h @@ -41,7 +41,6 @@ typedef struct { } TargetPageBits; #ifdef IN_PAGE_VARY -bool set_preferred_target_page_bits_common(int bits); void finalize_target_page_bits_common(int min); #endif diff --git a/page-vary-common.c b/page-vary-common.c index ab77672dd4..b41137c644 100644 --- a/page-vary-common.c +++ b/page-vary-common.c @@ -20,25 +20,32 @@ #define IN_PAGE_VARY 1 #include "qemu/osdep.h" +#include "qemu/target-info-impl.h" #include "exec/page-vary.h" /* WARNING: This file must *not* be complied with -flto. */ TargetPageBits target_page; -bool set_preferred_target_page_bits_common(int bits) +bool set_preferred_target_page_bits(int bits) { - /* - * The target page size is the lowest common denominator for all - * the CPUs in the system, so we can only make it smaller, never - * larger. And we can't make it smaller once we've committed to - * a particular size. - */ - if (target_page.bits == 0 || target_page.bits > bits) { - if (target_page.decided) { - return false; + const TargetInfo *ti = target_info(); + + assert(bits >= TARGET_PAGE_BITS_MIN); + if (ti->page_bits_vary) { + + /* + * The target page size is the lowest common denominator for all + * the CPUs in the system, so we can only make it smaller, never + * larger. And we can't make it smaller once we've committed to + * a particular size. + */ + if (target_page.bits == 0 || target_page.bits > bits) { + if (target_page.decided) { + return false; + } + target_page.bits = bits; } - target_page.bits = bits; } return true; } diff --git a/page-vary-target.c b/page-vary-target.c index 7c0565dd8d..d388c5c3d6 100644 --- a/page-vary-target.c +++ b/page-vary-target.c @@ -39,16 +39,6 @@ int migration_legacy_page_bits(void) } #endif -bool set_preferred_target_page_bits(int bits) -{ - assert(bits >= TARGET_PAGE_BITS_MIN); -#ifdef TARGET_PAGE_BITS_VARY - return set_preferred_target_page_bits_common(bits); -#else - return true; -#endif -} - void finalize_target_page_bits(void) { #ifndef TARGET_PAGE_BITS_VARY