From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55962) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bF1ku-0008Bk-Ip for qemu-devel@nongnu.org; Mon, 20 Jun 2016 12:08:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bF1kr-0008Uj-6r for qemu-devel@nongnu.org; Mon, 20 Jun 2016 12:08:56 -0400 Received: from mx3-phx2.redhat.com ([209.132.183.24]:60948) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bF1kq-0008Ua-VV for qemu-devel@nongnu.org; Mon, 20 Jun 2016 12:08:53 -0400 Date: Mon, 20 Jun 2016 12:08:37 -0400 (EDT) From: Paolo Bonzini Message-ID: <702806117.314024.1466438917254.JavaMail.zimbra@redhat.com> In-Reply-To: <57681080.20200@gmail.com> References: <1466181227-14934-1-git-send-email-alex.bennee@linaro.org> <57681080.20200@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC 0/7] Safe watch and breakpoint manipulation List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Sergey Fedorov Cc: Alex =?utf-8?Q?Benn=C3=A9e?= , mttcg@greensocs.com, qemu-devel@nongnu.org, fred konrad , a rigo , cota@braap.org, bobby prani , mark burton , jan kiszka , rth@twiddle.net, peter maydell , claudio fontana > > The patch series changes things in stages. > > > > First we move the break/watchpoints into an array which is more > > amenable to RCU control that the QLIST. We then control the life time > > of references to break/watchpoint data by removing long held > > references in the target code and getting information when needed from > > the core. Then we stop dynamically allocation the watch/breakpoint > > data and store it directly in the array which makes iteration across > > the list a bit more cache friendly than referenced pointers. Finally > > addition and removal of elements of the array is put under RCU > > control. This ensures there is always a safe array of data to check > > in the run-loop. > > I a little bit unsure if we really want to complicate things with RCU. > Why don't we simply protect the lists with a mutex given that there's no > contention expected? BTW, as it comes to debugging, I suppose we don't > expect great performance anyway. Mutexes do introduce some overhead. The breakpoints list are mostly touched during translation, but watchpoints aren't so we could use tb_lock for breakpoints and a separate per-CPU mutex for watchpoints. That could indeed work. Paolo