On 22 November 2017 at 12:01, Richard Henderson
<richard.hender...@linaro.org> wrote:
> On 11/22/2017 09:41 AM, Juan Quintela wrote:
>> This commit started use tb_unlock() and tlb_set_dirty() on non TCG
>> code.  Add the function as stubs.
>>
>> commit 27266271977c5a30f2f7d493e042be1897827bdd
>> Author: Peter Maydell <peter.mayd...@linaro.org>
>> Date:   Mon Nov 20 18:08:27 2017 +0000
>>
>>     exec.c: Factor out before/after actions for notdirty memory writes
>>     ....
>>
>> Signed-off-by: Juan Quintela <quint...@redhat.com>
>> ---
>>  accel/stubs/tcg-stub.c | 8 ++++++++
>>  1 file changed, 8 insertions(+)
>
> Hmm.  An alternate solution is
>
>
> diff --git a/exec.c b/exec.c
> index 03238a3449..ac902da89d 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -2378,6 +2378,7 @@ void memory_notdirty_write_prepare(NotDirtyInfo *ndi,
>  /* Called within RCU critical section. */
>  void memory_notdirty_write_complete(NotDirtyInfo *ndi)
>  {
> +    assert(tcg_enabled());
>      if (ndi->locked) {
>          tb_unlock();
>      }
>
>
> so that the rest of the function is compiled away.
>
> Thus my confusion about how Peter was adding any references to these functions
> -- he split half the function such that half is now not protected by an 
> assert.

Wow, I totally do not expect "assert(tcg_enabled())" to mean
"we rely on the compiler to be able to determine that this
code is dead" (and in general I'm not a fan of the compilation
relying on the compiler determining that code is dead).

thanks
-- PMM

Reply via email to