All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Emilio G. Cota" <cota@braap.org>
To: "Alex Bennée" <alex.bennee@linaro.org>
Cc: fam@euphon.net, berrange@redhat.com, robert.foley@linaro.org,
	richard.henderson@linaro.org, qemu-devel@nongnu.org,
	robhenry@microsoft.com, f4bug@amsat.org,
	aaron@os.amperecomputing.com, Paolo Bonzini <pbonzini@redhat.com>,
	kuhn.chenqun@huawei.com, peter.puhov@linaro.org,
	Eduardo Habkost <ehabkost@redhat.com>,
	aurelien@aurel32.net, Richard Henderson <rth@twiddle.net>
Subject: Re: [PATCH  v1 04/13] cputlb: ensure we save the IOTLB data in case of reset
Date: Sat, 11 Jul 2020 17:10:51 -0400	[thread overview]
Message-ID: <20200711211051.GC807960@sff> (raw)
In-Reply-To: <20200709141327.14631-5-alex.bennee@linaro.org>

On Thu, Jul 09, 2020 at 15:13:18 +0100, Alex Bennée wrote:
> Any write to a device might cause a re-arrangement of memory
> triggering a TLB flush and potential re-size of the TLB invalidating
> previous entries. This would cause users of qemu_plugin_get_hwaddr()
> to see the warning:
> 
>   invalid use of qemu_plugin_get_hwaddr
> 
> because of the failed tlb_lookup which should always succeed. To
> prevent this we save the IOTLB data in case it is later needed by a
> plugin doing a lookup.
> 
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

Reviewed-by: Emilio G. Cota <cota@braap.org>

Some minor comments below.


> --- a/accel/tcg/cputlb.c
> +++ b/accel/tcg/cputlb.c
> @@ -1073,6 +1073,42 @@ static uint64_t io_readx(CPUArchState *env, CPUIOTLBEntry *iotlbentry,
>      return val;
>  }
>  
> +#ifdef CONFIG_PLUGIN
> +
> +typedef struct SavedIOTLB {
> +    struct rcu_head rcu;
> +    hwaddr addr;
> +    MemoryRegionSection *section;
> +    hwaddr mr_offset;
> +} SavedIOTLB;
> +
> +/*
> + * Save a potentially trashed IOTLB entry for later lookup by plugin.
> + *
> + * We also need to track the thread storage address because the RCU
> + * cleanup that runs when we leave the critical region (the current
> + * execution) is actually in a different thread.

Mentioning the thread storage is now outdated -- I think this comment
(starting from 'We') can be removed.

> + */
> +static void save_iotlb_data(CPUState *cs, hwaddr addr, MemoryRegionSection *section, hwaddr mr_offset)
> +{
> +    SavedIOTLB *old, *new = g_new(SavedIOTLB, 1);
> +    new->addr = addr;
> +    new->section = section;
> +    new->mr_offset = mr_offset;
> +    old = atomic_rcu_read(&cs->saved_iotlb);
> +    atomic_rcu_set(&cs->saved_iotlb, new);
> +    if (old) {
> +        g_free_rcu(old, rcu);
> +    }

Using atomic_rcu_read here is not necessary (only this thread ever writes
to this field) and might confuse a reader when trying to find the
atomic_rcu_read that matches the atomic_rcu_set (that read is in
tlb_plugin_lookup).

Consider doing
	old = cs->saved_iotlb;
instead.

Thanks,
		Emilio


  parent reply	other threads:[~2020-07-11 21:11 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-09 14:13 [PATCH v1 00/13] misc rc0 fixes (docs, plugins, docker) Alex Bennée
2020-07-09 14:13 ` [PATCH v1 01/13] docs/devel: convert and update MTTCG design document Alex Bennée
2020-07-11 20:38   ` Emilio G. Cota
2020-07-09 14:13 ` [PATCH v1 02/13] docs/devel: add some notes on tcg-icount for developers Alex Bennée
2020-07-11 20:41   ` Emilio G. Cota
2020-07-09 14:13 ` [PATCH v1 03/13] docs: Add to gdbstub documentation the PhyMemMode Alex Bennée
2020-07-09 14:40   ` Philippe Mathieu-Daudé
2020-07-09 14:13 ` [PATCH v1 04/13] cputlb: ensure we save the IOTLB data in case of reset Alex Bennée
2020-07-10 21:03   ` Richard Henderson
2020-07-11 21:30     ` Emilio G. Cota
2020-07-12  9:58       ` Alex Bennée
2020-07-11 21:10   ` Emilio G. Cota [this message]
2020-07-09 14:13 ` [PATCH v1 05/13] hw/virtio/pci: include vdev name in registered PCI sections Alex Bennée
2020-07-27 13:32   ` Michael S. Tsirkin
2020-07-27 16:22     ` Alex Bennée
2020-07-09 14:13 ` [PATCH v1 06/13] plugins: add API to return a name for a IO device Alex Bennée
2020-07-09 15:03   ` Philippe Mathieu-Daudé
2020-07-09 16:30     ` Alex Bennée
2020-07-09 14:13 ` [PATCH v1 07/13] plugins: new hwprofile plugin Alex Bennée
2020-07-09 14:13 ` [PATCH v1 08/13] plugins: expand the bb plugin to be thread safe and track per-cpu Alex Bennée
2020-07-09 17:12   ` Robert Foley
2020-07-11 21:56   ` Emilio G. Cota
2020-07-12  9:48     ` Alex Bennée
2020-07-09 14:13 ` [PATCH v1 09/13] target/sh4: revert to using cpu_lduw_code to decode gusa Alex Bennée
2020-07-09 14:42   ` Philippe Mathieu-Daudé
2020-07-10 21:26   ` Richard Henderson
2020-07-09 14:13 ` [PATCH v1 10/13] tests/plugins: add -Wno-unknown-warning-option to handle -Wpsabi Alex Bennée
2020-07-09 17:27   ` Robert Foley
2020-07-10 21:29   ` Richard Henderson
2020-07-13 16:39     ` Alex Bennée
2020-07-13 18:27       ` Thomas Huth
2020-07-13 19:34         ` Alex Bennée
2020-07-09 14:13 ` [PATCH v1 11/13] tests/docker: fall back more gracefully when pull fails Alex Bennée
2020-07-09 14:46   ` Philippe Mathieu-Daudé
2020-07-09 14:13 ` [PATCH v1 12/13] tests/docker: update toolchain set in debian-xtensa-cross Alex Bennée
2020-07-09 14:54   ` Philippe Mathieu-Daudé
2020-07-09 14:13 ` [PATCH v1 13/13] configure: remove all dependencies on a (re)configure Alex Bennée

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200711211051.GC807960@sff \
    --to=cota@braap.org \
    --cc=aaron@os.amperecomputing.com \
    --cc=alex.bennee@linaro.org \
    --cc=aurelien@aurel32.net \
    --cc=berrange@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=f4bug@amsat.org \
    --cc=fam@euphon.net \
    --cc=kuhn.chenqun@huawei.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.puhov@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=robert.foley@linaro.org \
    --cc=robhenry@microsoft.com \
    --cc=rth@twiddle.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.