diff mbox series

[3/9] accel/tcg: Remove page_protect

Message ID 20250328200459.483089-4-richard.henderson@linaro.org (mailing list archive)
State New
Headers show
Series single-binary: Restrict scope of TARGET_PAGE_BITS_MIN | expand

Commit Message

Richard Henderson March 28, 2025, 8:04 p.m. UTC
Merge the user-only page_protect function with the user-only
implementation of tb_lock_page0.  This avoids pulling
page-protection.h into tb-internal.h.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 accel/tcg/tb-internal.h        | 11 +++--------
 include/user/page-protection.h |  1 -
 accel/tcg/user-exec.c          |  2 +-
 3 files changed, 4 insertions(+), 10 deletions(-)

Comments

Pierrick Bouvier March 28, 2025, 8:17 p.m. UTC | #1
On 3/28/25 13:04, Richard Henderson wrote:
> Merge the user-only page_protect function with the user-only
> implementation of tb_lock_page0.  This avoids pulling
> page-protection.h into tb-internal.h.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   accel/tcg/tb-internal.h        | 11 +++--------
>   include/user/page-protection.h |  1 -
>   accel/tcg/user-exec.c          |  2 +-
>   3 files changed, 4 insertions(+), 10 deletions(-)
> 
> diff --git a/accel/tcg/tb-internal.h b/accel/tcg/tb-internal.h
> index 68aa8d17f4..f7c2073e29 100644
> --- a/accel/tcg/tb-internal.h
> +++ b/accel/tcg/tb-internal.h
> @@ -51,28 +51,23 @@
>   
>   #endif /* CONFIG_SOFTMMU */
>   
> +void tb_lock_page0(tb_page_addr_t);
> +
>   #ifdef CONFIG_USER_ONLY
> -#include "user/page-protection.h"
>   /*
>    * For user-only, page_protect sets the page read-only.
>    * Since most execution is already on read-only pages, and we'd need to
>    * account for other TBs on the same page, defer undoing any page protection
>    * until we receive the write fault.
>    */
> -static inline void tb_lock_page0(tb_page_addr_t p0)
> -{
> -    page_protect(p0);
> -}
> -
>   static inline void tb_lock_page1(tb_page_addr_t p0, tb_page_addr_t p1)
>   {
> -    page_protect(p1);
> +    tb_lock_page0(p1);
>   }
>   
>   static inline void tb_unlock_page1(tb_page_addr_t p0, tb_page_addr_t p1) { }
>   static inline void tb_unlock_pages(TranslationBlock *tb) { }
>   #else
> -void tb_lock_page0(tb_page_addr_t);
>   void tb_lock_page1(tb_page_addr_t, tb_page_addr_t);
>   void tb_unlock_page1(tb_page_addr_t, tb_page_addr_t);
>   void tb_unlock_pages(TranslationBlock *);
> diff --git a/include/user/page-protection.h b/include/user/page-protection.h
> index 51daa18648..d5c8748d49 100644
> --- a/include/user/page-protection.h
> +++ b/include/user/page-protection.h
> @@ -16,7 +16,6 @@
>   #include "exec/target_long.h"
>   #include "exec/translation-block.h"
>   
> -void page_protect(tb_page_addr_t page_addr);
>   int page_unprotect(tb_page_addr_t address, uintptr_t pc);
>   
>   int page_get_flags(target_ulong address);
> diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
> index 667c5e0354..72a9809c2d 100644
> --- a/accel/tcg/user-exec.c
> +++ b/accel/tcg/user-exec.c
> @@ -657,7 +657,7 @@ target_ulong page_find_range_empty(target_ulong min, target_ulong max,
>       }
>   }
>   
> -void page_protect(tb_page_addr_t address)
> +void tb_lock_page0(tb_page_addr_t address)
>   {
>       PageFlagsNode *p;
>       target_ulong start, last;

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

Patch

diff --git a/accel/tcg/tb-internal.h b/accel/tcg/tb-internal.h
index 68aa8d17f4..f7c2073e29 100644
--- a/accel/tcg/tb-internal.h
+++ b/accel/tcg/tb-internal.h
@@ -51,28 +51,23 @@ 
 
 #endif /* CONFIG_SOFTMMU */
 
+void tb_lock_page0(tb_page_addr_t);
+
 #ifdef CONFIG_USER_ONLY
-#include "user/page-protection.h"
 /*
  * For user-only, page_protect sets the page read-only.
  * Since most execution is already on read-only pages, and we'd need to
  * account for other TBs on the same page, defer undoing any page protection
  * until we receive the write fault.
  */
-static inline void tb_lock_page0(tb_page_addr_t p0)
-{
-    page_protect(p0);
-}
-
 static inline void tb_lock_page1(tb_page_addr_t p0, tb_page_addr_t p1)
 {
-    page_protect(p1);
+    tb_lock_page0(p1);
 }
 
 static inline void tb_unlock_page1(tb_page_addr_t p0, tb_page_addr_t p1) { }
 static inline void tb_unlock_pages(TranslationBlock *tb) { }
 #else
-void tb_lock_page0(tb_page_addr_t);
 void tb_lock_page1(tb_page_addr_t, tb_page_addr_t);
 void tb_unlock_page1(tb_page_addr_t, tb_page_addr_t);
 void tb_unlock_pages(TranslationBlock *);
diff --git a/include/user/page-protection.h b/include/user/page-protection.h
index 51daa18648..d5c8748d49 100644
--- a/include/user/page-protection.h
+++ b/include/user/page-protection.h
@@ -16,7 +16,6 @@ 
 #include "exec/target_long.h"
 #include "exec/translation-block.h"
 
-void page_protect(tb_page_addr_t page_addr);
 int page_unprotect(tb_page_addr_t address, uintptr_t pc);
 
 int page_get_flags(target_ulong address);
diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
index 667c5e0354..72a9809c2d 100644
--- a/accel/tcg/user-exec.c
+++ b/accel/tcg/user-exec.c
@@ -657,7 +657,7 @@  target_ulong page_find_range_empty(target_ulong min, target_ulong max,
     }
 }
 
-void page_protect(tb_page_addr_t address)
+void tb_lock_page0(tb_page_addr_t address)
 {
     PageFlagsNode *p;
     target_ulong start, last;