From patchwork Sat Aug 24 21:34:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 172148 Delivered-To: patch@linaro.org Received: by 2002:a92:d204:0:0:0:0:0 with SMTP id y4csp2420885ily; Sat, 24 Aug 2019 14:43:39 -0700 (PDT) X-Google-Smtp-Source: APXvYqzhOiqepBafEtx0ZnH7gc2F874Pm/tRHtpIlBkQKYvlIR6BAa4VVv6q2RbRWBZF8ylt/ZV5 X-Received: by 2002:a37:4b0d:: with SMTP id y13mr10372211qka.3.1566683019836; Sat, 24 Aug 2019 14:43:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566683019; cv=none; d=google.com; s=arc-20160816; b=WRUOrA/yJ7/MsCBcOTX8oycQWKQlJtl7RaFfkx38nuwjBZlF3fnAR1WIs5vnx5JLZs whc5uwbrIYtycKw2C1Dyfg32eZo4tnUC2zXniWkXO+KvAwcy5NlvCsnKhdj2pvBwI3lx E30vlE8LPISUxSLyDqh5+D8sEE5XeBTRDz7LvqpbObzcxB58F9vwLhA0xSDWtX2+WF4q Vgr1vPwe1zA+iPYQ5W39xd1f5Oi/BE/6pRYpHy2g+QwjqmUedAiag+xvoR/gXK5COSEq LGd+KL3/rk2EnkYJqYuqi0ho69uvYGnx5DOTwPeFxWaW3vIaxth/+srJuc3TqpmMwklL kh5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=MaPRheG1y5rukm0xNUMPfKKNGnqQD10OMwv720v5bPI=; b=E8FzC6MlqxzHafwSAqp9dO0aldcgUca2tfKNoOcG15iGeUjAKkf5DkyH4B8BNUiRcz gyjbcqyEx548uyL0p+q2esXqHefgR02oEx/Q+DqcIchrIHh0lPA4LglheWKnHpheqXwk 7AeGRmvaHOztBmAe0n/eDHBuLcp62UY40pfVK6apmU6HdqetUNVh8++Ek25FpKEmYgJ1 jfz9GOjT2Q4FAkusn2arIZB9fDBPEbKUMHwUbqAZmyLVWmRzKdy2bfhaITohgNGZUZ80 KJPHYH58n3PX3BqF25BS3NdmZRxwJVnrrXYKdkRa65YDNH2+P2cy50Cglw+O0Azo1H73 p9YA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=IRBBH0kE; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id l29si4816333qtk.192.2019.08.24.14.43.39 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 24 Aug 2019 14:43:39 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=IRBBH0kE; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39572 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i1dox-0007VH-Df for patch@linaro.org; Sat, 24 Aug 2019 17:43:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36379) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i1dgh-0001N6-I5 for qemu-devel@nongnu.org; Sat, 24 Aug 2019 17:35:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i1dgg-00036S-FK for qemu-devel@nongnu.org; Sat, 24 Aug 2019 17:35:07 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]:46383) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1i1dge-00034S-FE for qemu-devel@nongnu.org; Sat, 24 Aug 2019 17:35:04 -0400 Received: by mail-pf1-x433.google.com with SMTP id q139so9018181pfc.13 for ; Sat, 24 Aug 2019 14:35:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=MaPRheG1y5rukm0xNUMPfKKNGnqQD10OMwv720v5bPI=; b=IRBBH0kEUItTpr7/5DkK7rpgZWXEMN/EWz9awnmHsbyDiZF8PoyFGAOliB9eS7W/VZ XA3M8IrxfIBQ7b8+M3km6ObNNEtgl8q2dSJB0n5ivnabU7X9YWQSN7x8Dpnmla9M8oPS qC05fD8ey5UIYzT7p3naFjR/pcouqOSyJOR4uzk1YuG8TsUwxrKNdS2oMD7w2ikECJBF lDn/ku0lrbQWo9e/kvar6E8oJP+6R5GsOIZqcbG7Ekm3W3XxH91A4y6hC/Drxojsf9dZ XjJ724JDTPhzNi41pW2JdyZEGpA+QpiNui1J4LTBfslHIw7J2IjIyKygp95ouN4HUn2D gaaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=MaPRheG1y5rukm0xNUMPfKKNGnqQD10OMwv720v5bPI=; b=VJ7ms3BE0QuAt7QalE9H+tIysIjZm0hDMhladWpZsNrxTUqTtXfQg332pnAPxObrRm 8Kj/bZHFuMtY2/2wip9h0y/bKJnH8LHaFhC/115uJYeM67pZGDNhmxOKMqL1sRzzQZC3 z0PGz4rsN/qH8urdW0ysoSHCwuaUnmpxwZP3uWAKlKLWPa48Zg5A163Ry5HPZieqLRKn Nau4xlDmx+S2iIWB9Mv1RmiiH5sydc1iEapEvRhjiQJ8E3FTe64V5+QBDDl5UDj3+IKY 69uBtuGYrff+orM1QRJ+lknSG6MF2512t38jXaVDjEm6Q7CT6U5TLVzwak1DLK3WcBbs af/A== X-Gm-Message-State: APjAAAU2Z+CEE/V+1HdFMghgB6j5HdAtautrvYthDbnV+pQc9gz32JTy EkBYBuxEmHmHLtgf+/7JNSo1Ua8nOAc= X-Received: by 2002:a17:90a:17aa:: with SMTP id q39mr12013875pja.106.1566682501676; Sat, 24 Aug 2019 14:35:01 -0700 (PDT) Received: from localhost.localdomain (97-113-7-119.tukw.qwest.net. [97.113.7.119]) by smtp.gmail.com with ESMTPSA id 81sm6325753pfx.111.2019.08.24.14.35.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 24 Aug 2019 14:35:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sat, 24 Aug 2019 14:34:51 -0700 Message-Id: <20190824213451.31118-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190824213451.31118-1-richard.henderson@linaro.org> References: <20190824213451.31118-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::433 Subject: [Qemu-devel] [PATCH 6/6] tcg: Check for watchpoints in probe_write() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, david@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: David Hildenbrand Let size > 0 indicate a promise to write to those bytes. Check for write watchpoints in the probed range. Suggested-by: Richard Henderson Signed-off-by: David Hildenbrand Message-Id: <20190823100741.9621-10-david@redhat.com> [rth: Recompute index after tlb_fill; check TLB_WATCHPOINT.] Signed-off-by: Richard Henderson --- accel/tcg/cputlb.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) -- 2.17.1 diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c index f7a414a131..7fc7aa9482 100644 --- a/accel/tcg/cputlb.c +++ b/accel/tcg/cputlb.c @@ -1086,13 +1086,24 @@ void probe_write(CPUArchState *env, target_ulong addr, int size, int mmu_idx, { uintptr_t index = tlb_index(env, mmu_idx, addr); CPUTLBEntry *entry = tlb_entry(env, mmu_idx, addr); + target_ulong tlb_addr = tlb_addr_write(entry); - if (!tlb_hit(tlb_addr_write(entry), addr)) { - /* TLB entry is for a different page */ + if (unlikely(!tlb_hit(tlb_addr, addr))) { if (!VICTIM_TLB_HIT(addr_write, addr)) { tlb_fill(env_cpu(env), addr, size, MMU_DATA_STORE, mmu_idx, retaddr); + /* TLB resize via tlb_fill may have moved the entry. */ + index = tlb_index(env, mmu_idx, addr); + entry = tlb_entry(env, mmu_idx, addr); } + tlb_addr = tlb_addr_write(entry); + } + + /* Handle watchpoints. */ + if ((tlb_addr & TLB_WATCHPOINT) && size > 0) { + cpu_check_watchpoint(env_cpu(env), addr, size, + env_tlb(env)->d[mmu_idx].iotlb[index].attrs, + BP_MEM_WRITE, retaddr); } }