[PATCH v2 5/7] page-vary: Build finalize_target_page_bits as common code

Richard Henderson posted 7 patches 1 month, 3 weeks ago
Maintainers: Pierrick Bouvier <pierrick.bouvier@linaro.org>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Peter Maydell <peter.maydell@linaro.org>
[PATCH v2 5/7] page-vary: Build finalize_target_page_bits as common code
Posted by Richard Henderson 1 month, 3 weeks ago
Use target_info->page_bits_init to merge
finalize_target_page_bits_common into
finalize_target_page_bits in page-vary-common.c.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 include/exec/page-vary.h |  4 ----
 page-vary-common.c       | 15 +++++++++++----
 page-vary-target.c       | 12 ------------
 3 files changed, 11 insertions(+), 20 deletions(-)

diff --git a/include/exec/page-vary.h b/include/exec/page-vary.h
index c4dc56634b..f2d735bec2 100644
--- a/include/exec/page-vary.h
+++ b/include/exec/page-vary.h
@@ -40,10 +40,6 @@ typedef struct {
     uint64_t mask;
 } TargetPageBits;
 
-#ifdef IN_PAGE_VARY
-void finalize_target_page_bits_common(int min);
-#endif
-
 /**
  * set_preferred_target_page_bits:
  * @bits: number of bits needed to represent an address within the page
diff --git a/page-vary-common.c b/page-vary-common.c
index b41137c644..ddd0863378 100644
--- a/page-vary-common.c
+++ b/page-vary-common.c
@@ -50,11 +50,18 @@ bool set_preferred_target_page_bits(int bits)
     return true;
 }
 
-void finalize_target_page_bits_common(int min)
+void finalize_target_page_bits(void)
 {
-    if (target_page.bits == 0) {
-        target_page.bits = min;
+    int bits = target_page.bits;
+
+    if (bits == 0) {
+        const TargetInfo *ti = target_info();
+
+        bits = ti->page_bits_init;
+        assert(bits != 0);
+        target_page.bits = bits;
     }
-    target_page.mask = -1ull << target_page.bits;
+
+    target_page.mask = -1ull << bits;
     target_page.decided = true;
 }
diff --git a/page-vary-target.c b/page-vary-target.c
index d388c5c3d6..bc4d8931b6 100644
--- a/page-vary-target.c
+++ b/page-vary-target.c
@@ -38,15 +38,3 @@ int migration_legacy_page_bits(void)
 #endif
 }
 #endif
-
-void finalize_target_page_bits(void)
-{
-#ifndef TARGET_PAGE_BITS_VARY
-    finalize_target_page_bits_common(TARGET_PAGE_BITS);
-#elif defined(CONFIG_USER_ONLY)
-    assert(target_page.bits != 0);
-    finalize_target_page_bits_common(target_page.bits);
-#else
-    finalize_target_page_bits_common(TARGET_PAGE_BITS_LEGACY);
-#endif
-}
-- 
2.43.0
Re: [PATCH v2 5/7] page-vary: Build finalize_target_page_bits as common code
Posted by Pierrick Bouvier 1 month, 2 weeks ago
On 2/17/26 1:51 AM, Richard Henderson wrote:
> Use target_info->page_bits_init to merge
> finalize_target_page_bits_common into
> finalize_target_page_bits in page-vary-common.c.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   include/exec/page-vary.h |  4 ----
>   page-vary-common.c       | 15 +++++++++++----
>   page-vary-target.c       | 12 ------------
>   3 files changed, 11 insertions(+), 20 deletions(-)
> 

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>