[PATCH v2 4/7] page-vary: Build set_preferred_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 4/7] page-vary: Build set_preferred_target_page_bits as common code
Posted by Richard Henderson 1 month, 3 weeks ago
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 <richard.henderson@linaro.org>
---
 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
-- 
2.43.0
Re: [PATCH v2 4/7] page-vary: Build set_preferred_target_page_bits as common code
Posted by Philippe Mathieu-Daudé 1 month, 3 weeks ago
On 17/2/26 10:51, Richard Henderson wrote:
> 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 <richard.henderson@linaro.org>
> ---
>   include/exec/page-vary.h |  1 -
>   page-vary-common.c       | 29 ++++++++++++++++++-----------
>   page-vary-target.c       | 10 ----------
>   3 files changed, 18 insertions(+), 22 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>