[Qemu-devel] [PATCH] linux-user/sparc/signal.c: Remove unnecessary comment

Peter Maydell posted 1 patch 7 years ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20181009184017.15675-1-peter.maydell@linaro.org
Test docker-clang@ubuntu failed
Test checkpatch passed
linux-user/sparc/signal.c | 4 ----
1 file changed, 4 deletions(-)
[Qemu-devel] [PATCH] linux-user/sparc/signal.c: Remove unnecessary comment
Posted by Peter Maydell 7 years ago
Remove a comment suggesting that we need to call tb_flush()
after writing the SPARC signal frame trampoline insns.
This isn't necessary in QEMU, because (even if the guest
architecture requires explicit icache maintenance) we
ensure that memory writes result in invalidation of
translated code from that memory.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
Found (with grep) while looking at what parts of the tree call
tb_flush()...

 linux-user/sparc/signal.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c
index b4c60aa4468..e44e99993c6 100644
--- a/linux-user/sparc/signal.c
+++ b/linux-user/sparc/signal.c
@@ -258,10 +258,6 @@ void setup_frame(int sig, struct target_sigaction *ka,
         __put_user(val32, &sf->insns[1]);
         if (err)
             goto sigsegv;
-
-        /* Flush instruction space. */
-        // flush_sig_insns(current->mm, (unsigned long) &(sf->insns[0]));
-        // tb_flush(env);
     }
     unlock_user(sf, sf_addr, sizeof(struct target_signal_frame));
     return;
-- 
2.19.0


Re: [Qemu-devel] [PATCH] linux-user/sparc/signal.c: Remove unnecessary comment
Posted by Laurent Vivier 7 years ago
Le 09/10/2018 à 20:40, Peter Maydell a écrit :
> Remove a comment suggesting that we need to call tb_flush()
> after writing the SPARC signal frame trampoline insns.
> This isn't necessary in QEMU, because (even if the guest
> architecture requires explicit icache maintenance) we
> ensure that memory writes result in invalidation of
> translated code from that memory.

By curiosity, where/how is it done?

Thanks,
Laurent


Re: [Qemu-devel] [PATCH] linux-user/sparc/signal.c: Remove unnecessary comment
Posted by Richard Henderson 7 years ago
On 10/9/18 12:45 PM, Laurent Vivier wrote:
> Le 09/10/2018 à 20:40, Peter Maydell a écrit :
>> Remove a comment suggesting that we need to call tb_flush()
>> after writing the SPARC signal frame trampoline insns.
>> This isn't necessary in QEMU, because (even if the guest
>> architecture requires explicit icache maintenance) we
>> ensure that memory writes result in invalidation of
>> translated code from that memory.
> 
> By curiosity, where/how is it done?

Guest pages that have had code translated from them are mprotect'd read-only.
The host SIGSEGV handler notices writes to such pages, invalidates the
translated code, and marks the page read-write again.  At which point the guest
program continues.


r~

Re: [Qemu-devel] [PATCH] linux-user/sparc/signal.c: Remove unnecessary comment
Posted by Laurent Vivier 7 years ago
On 09/10/2018 20:40, Peter Maydell wrote:
> Remove a comment suggesting that we need to call tb_flush()
> after writing the SPARC signal frame trampoline insns.
> This isn't necessary in QEMU, because (even if the guest
> architecture requires explicit icache maintenance) we
> ensure that memory writes result in invalidation of
> translated code from that memory.
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> Found (with grep) while looking at what parts of the tree call
> tb_flush()...
> 
>  linux-user/sparc/signal.c | 4 ----

Applied to my branch linux-user-for-3.1

Thanks,
Laurent