[PATCH] target/i386: Use probe_access_full_mmu in ptw_translate

Richard Henderson posted 1 patch 1 month, 2 weeks ago
There is a newer version of this series
target/i386/tcg/sysemu/excp_helper.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
[PATCH] target/i386: Use probe_access_full_mmu in ptw_translate
Posted by Richard Henderson 1 month, 2 weeks ago
The probe_access_full_mmu function was designed for this purpose,
and does not report the memory operation event to plugins.

Cc: qemu-stable@nongnu.org
Fixes: 6d03226b422 ("plugins: force slow path when plugins instrument memory ops")
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/i386/tcg/sysemu/excp_helper.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/target/i386/tcg/sysemu/excp_helper.c b/target/i386/tcg/sysemu/excp_helper.c
index 8fb05b1f53..8f4dc08535 100644
--- a/target/i386/tcg/sysemu/excp_helper.c
+++ b/target/i386/tcg/sysemu/excp_helper.c
@@ -62,12 +62,11 @@ typedef struct PTETranslate {
 
 static bool ptw_translate(PTETranslate *inout, hwaddr addr, uint64_t ra)
 {
-    CPUTLBEntryFull *full;
     int flags;
 
     inout->gaddr = addr;
-    flags = probe_access_full(inout->env, addr, 0, MMU_DATA_STORE,
-                              inout->ptw_idx, true, &inout->haddr, &full, ra);
+    flags = probe_access_full_mmu(inout->env, addr, 0, MMU_DATA_STORE,
+                                  inout->ptw_idx, &inout->haddr, NULL);
 
     if (unlikely(flags & TLB_INVALID_MASK)) {
         TranslateFault *err = inout->err;
@@ -429,9 +428,8 @@ do_check_protect_pse36:
         CPUTLBEntryFull *full;
         int flags, nested_page_size;
 
-        flags = probe_access_full(env, paddr, 0, access_type,
-                                  MMU_NESTED_IDX, true,
-                                  &pte_trans.haddr, &full, 0);
+        flags = probe_access_full_mmu(env, paddr, 0, access_type,
+                                      MMU_NESTED_IDX, &pte_trans.haddr, &full);
         if (unlikely(flags & TLB_INVALID_MASK)) {
             *err = (TranslateFault){
                 .error_code = env->error_code,
-- 
2.43.0
Re: [PATCH] target/i386: Use probe_access_full_mmu in ptw_translate
Posted by Alex Bennée 1 month, 2 weeks ago
Richard Henderson <richard.henderson@linaro.org> writes:

> The probe_access_full_mmu function was designed for this purpose,
> and does not report the memory operation event to plugins.

I note the kdoc for probe_access_full_mmu has the wrong title. It might
be worth referencing the fault and instrumentation behaviour in the
probe_access_full() kdoc as well.

>
> Cc: qemu-stable@nongnu.org
> Fixes: 6d03226b422 ("plugins: force slow path when plugins instrument memory ops")
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  target/i386/tcg/sysemu/excp_helper.c | 10 ++++------
>  1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/target/i386/tcg/sysemu/excp_helper.c b/target/i386/tcg/sysemu/excp_helper.c
> index 8fb05b1f53..8f4dc08535 100644
> --- a/target/i386/tcg/sysemu/excp_helper.c
> +++ b/target/i386/tcg/sysemu/excp_helper.c
> @@ -62,12 +62,11 @@ typedef struct PTETranslate {
>  
>  static bool ptw_translate(PTETranslate *inout, hwaddr addr, uint64_t ra)
>  {
> -    CPUTLBEntryFull *full;
>      int flags;
>  
>      inout->gaddr = addr;
> -    flags = probe_access_full(inout->env, addr, 0, MMU_DATA_STORE,
> -                              inout->ptw_idx, true, &inout->haddr, &full, ra);
> +    flags = probe_access_full_mmu(inout->env, addr, 0, MMU_DATA_STORE,
> +                                  inout->ptw_idx, &inout->haddr, NULL);
>  
>      if (unlikely(flags & TLB_INVALID_MASK)) {
>          TranslateFault *err = inout->err;
> @@ -429,9 +428,8 @@ do_check_protect_pse36:
>          CPUTLBEntryFull *full;
>          int flags, nested_page_size;
>  
> -        flags = probe_access_full(env, paddr, 0, access_type,
> -                                  MMU_NESTED_IDX, true,
> -                                  &pte_trans.haddr, &full, 0);
> +        flags = probe_access_full_mmu(env, paddr, 0, access_type,
> +                                      MMU_NESTED_IDX, &pte_trans.haddr, &full);
>          if (unlikely(flags & TLB_INVALID_MASK)) {
>              *err = (TranslateFault){
>                  .error_code = env->error_code,

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro
Re: [PATCH] target/i386: Use probe_access_full_mmu in ptw_translate
Posted by Philippe Mathieu-Daudé 1 month, 2 weeks ago
On 8/10/24 21:20, Richard Henderson wrote:
> The probe_access_full_mmu function was designed for this purpose,
> and does not report the memory operation event to plugins.
> 
> Cc: qemu-stable@nongnu.org
> Fixes: 6d03226b422 ("plugins: force slow path when plugins instrument memory ops")
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   target/i386/tcg/sysemu/excp_helper.c | 10 ++++------
>   1 file changed, 4 insertions(+), 6 deletions(-)
> 
> diff --git a/target/i386/tcg/sysemu/excp_helper.c b/target/i386/tcg/sysemu/excp_helper.c
> index 8fb05b1f53..8f4dc08535 100644
> --- a/target/i386/tcg/sysemu/excp_helper.c
> +++ b/target/i386/tcg/sysemu/excp_helper.c
> @@ -62,12 +62,11 @@ typedef struct PTETranslate {
>   
>   static bool ptw_translate(PTETranslate *inout, hwaddr addr, uint64_t ra)

We can remove the @ra argument; maybe clearer to do it in a
separate commit.

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


Re: [PATCH] target/i386: Use probe_access_full_mmu in ptw_translate
Posted by Richard Henderson 1 month, 1 week ago
On 10/8/24 20:48, Philippe Mathieu-Daudé wrote:
> On 8/10/24 21:20, Richard Henderson wrote:
>> The probe_access_full_mmu function was designed for this purpose,
>> and does not report the memory operation event to plugins.
>>
>> Cc: qemu-stable@nongnu.org
>> Fixes: 6d03226b422 ("plugins: force slow path when plugins instrument memory ops")
>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>> ---
>>   target/i386/tcg/sysemu/excp_helper.c | 10 ++++------
>>   1 file changed, 4 insertions(+), 6 deletions(-)
>>
>> diff --git a/target/i386/tcg/sysemu/excp_helper.c b/target/i386/tcg/sysemu/excp_helper.c
>> index 8fb05b1f53..8f4dc08535 100644
>> --- a/target/i386/tcg/sysemu/excp_helper.c
>> +++ b/target/i386/tcg/sysemu/excp_helper.c
>> @@ -62,12 +62,11 @@ typedef struct PTETranslate {
>>   static bool ptw_translate(PTETranslate *inout, hwaddr addr, uint64_t ra)
> 
> We can remove the @ra argument; maybe clearer to do it in a
> separate commit.

Good idea.

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