From: Richard Henderson <richard.henderson@linaro.org> To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, david@redhat.com Subject: [Qemu-devel] [PATCH 0/6] exec: Cleanup watchpoints Date: Sat, 24 Aug 2019 14:34:45 -0700 Message-ID: <20190824213451.31118-1-richard.henderson@linaro.org> (raw) As discussed with David earlier this week, the current implementation of watchpoints cannot work, at least reliably. We are raising an exception out of the middle of the i/o access path which does not even attempt to unwind the guest cpu state, nor does it have the information required to do so. This moves the implementation to the cputlb helpers. This is a point at which we can and do raise exceptions properly. In addition, this fixes a bug in that unaligned stores were detecting watchpoints in the middle of the byte-by-byte operation, which means that we didn't signal the watchpoint early enough to avoid state change. r~ David Hildenbrand (2): exec: Factor out core logic of check_watchpoint() tcg: Check for watchpoints in probe_write() Richard Henderson (4): exec: Move user-only watchpoint stubs inline cputlb: Fold TLB_RECHECK into TLB_INVALID_MASK exec: Factor out cpu_watchpoint_address_matches cputlb: Handle watchpoints via TLB_WATCHPOINT include/exec/cpu-all.h | 8 +- include/hw/core/cpu.h | 37 +++++++++ accel/tcg/cputlb.c | 156 ++++++++++++++++++++++++-------------- exec.c | 167 +++++++++-------------------------------- 4 files changed, 173 insertions(+), 195 deletions(-) -- 2.17.1
next reply index Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-08-24 21:34 Richard Henderson [this message] 2019-08-24 21:34 ` [Qemu-devel] [PATCH 1/6] exec: Move user-only watchpoint stubs inline Richard Henderson 2019-08-26 7:45 ` David Hildenbrand 2019-08-24 21:34 ` [Qemu-devel] [PATCH 2/6] exec: Factor out core logic of check_watchpoint() Richard Henderson 2019-08-24 21:34 ` [Qemu-devel] [PATCH 3/6] cputlb: Fold TLB_RECHECK into TLB_INVALID_MASK Richard Henderson 2019-08-26 8:36 ` David Hildenbrand 2019-08-24 21:34 ` [Qemu-devel] [PATCH 4/6] exec: Factor out cpu_watchpoint_address_matches Richard Henderson 2019-08-26 8:41 ` David Hildenbrand 2019-08-28 21:28 ` Richard Henderson 2019-08-28 21:54 ` David Hildenbrand 2019-08-24 21:34 ` [Qemu-devel] [PATCH 5/6] cputlb: Handle watchpoints via TLB_WATCHPOINT Richard Henderson 2019-08-28 22:00 ` David Hildenbrand 2019-08-24 21:34 ` [Qemu-devel] [PATCH 6/6] tcg: Check for watchpoints in probe_write() Richard Henderson 2019-08-28 21:47 ` [Qemu-devel] [PATCH 0/6] exec: Cleanup watchpoints Richard Henderson
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=20190824213451.31118-1-richard.henderson@linaro.org \ --to=richard.henderson@linaro.org \ --cc=david@redhat.com \ --cc=peter.maydell@linaro.org \ --cc=qemu-devel@nongnu.org \ /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
QEMU-Devel Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/qemu-devel/0 qemu-devel/git/0.git git clone --mirror https://lore.kernel.org/qemu-devel/1 qemu-devel/git/1.git git clone --mirror https://lore.kernel.org/qemu-devel/2 qemu-devel/git/2.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 qemu-devel qemu-devel/ https://lore.kernel.org/qemu-devel \ qemu-devel@nongnu.org public-inbox-index qemu-devel Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.nongnu.qemu-devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git