From nobody Tue Nov 11 03:18:53 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1560794805; cv=none; d=zoho.com; s=zohoarc; b=TsqB95ALdp7oJzs11q3g34kw12XP7keBYyWEctBDjHNHpDqzMPLQN32HrucYvyjjsIuelw+fFtG09WgW4hw6v/E3ZnW73qFhqyKcKG43f6iZYSlSKo8qDb+JcIHVeVL8BwlGdwV+NYH7LfhwrTrw8e3FK4FsV6tsPRoK3nRxTd0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560794805; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=49HRpG9G1+QXdfmmlaxcFNw0+wgkBMXI7yMkggaZdA8=; b=Vn8BovdVxIx/pi8SgTwAQAHgBvxTdYdKoiF3B8qceLllsXDXfuOHJByJ+/MqwKj7MYdHQt/dy3aW8WCKqe2b4YubV2/9XJw5z/LQ/tlkau+12JwtIxvlwovmDmHbLp/kNFUsNVeixZ5QmTK4dlQsL00fpRh+4jBN8e9DxmL5J9s= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 156079480555077.54245870104194; Mon, 17 Jun 2019 11:06:45 -0700 (PDT) Received: from localhost ([::1]:50740 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hcw1f-0004ZV-J5 for importer@patchew.org; Mon, 17 Jun 2019 14:06:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52072) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hcvsw-0005fv-Ok for qemu-devel@nongnu.org; Mon, 17 Jun 2019 13:57:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hcvss-0003S4-Vn for qemu-devel@nongnu.org; Mon, 17 Jun 2019 13:57:38 -0400 Received: from userp2120.oracle.com ([156.151.31.85]:40362) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hcvss-0003RZ-M9 for qemu-devel@nongnu.org; Mon, 17 Jun 2019 13:57:34 -0400 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x5HHs6kO148245; Mon, 17 Jun 2019 17:57:32 GMT Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by userp2120.oracle.com with ESMTP id 2t4saq7w43-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 17 Jun 2019 17:57:32 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x5HHvWaX130537; Mon, 17 Jun 2019 17:57:32 GMT Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3030.oracle.com with ESMTP id 2t59gdc0hq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 17 Jun 2019 17:57:32 +0000 Received: from abhmp0012.oracle.com (abhmp0012.oracle.com [141.146.116.18]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id x5HHvUZF029068; Mon, 17 Jun 2019 17:57:30 GMT Received: from spark.ravello.local (/213.57.127.2) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 17 Jun 2019 10:57:29 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=corp-2018-07-02; bh=49HRpG9G1+QXdfmmlaxcFNw0+wgkBMXI7yMkggaZdA8=; b=A2okq+D9xdwl+t0WEfkcPWvWMBc7wD0saM5Z/6+jHSbeTBlaw+IR7/o49p03iLVPqElm 2v8B69hzCZ08Ts7Ab+kU86o4GRMi65SWQHWnagBIr3D/mnBmcvp8Sn+sIAmmX6jPcwbw k5wkLx4w7P5V94/Cz2NWG2OIfT7RcIChx09w4ZmlzaaAiNT7gToYFm0qTwMo74mOzMxL DownXIdc9oTM8bN9er+pmvQw5AA9HBkfc9C/TJuAlOGRJRwQzSjVFzH+s1MuDMOcov4F Wn6fE3mcDDt96jNOLxrULRkhPuU1mwpq1Va7raiyMJjo29Zou5/NuDZXK8axfLomvqLb 6Q== From: Liran Alon To: qemu-devel@nongnu.org Date: Mon, 17 Jun 2019 20:56:52 +0300 Message-Id: <20190617175658.135869-4-liran.alon@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617175658.135869-1-liran.alon@oracle.com> References: <20190617175658.135869-1-liran.alon@oracle.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9291 signatures=668687 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=1 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1906170160 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9291 signatures=668687 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1906170160 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] X-Received-From: 156.151.31.85 Subject: [Qemu-devel] [QEMU PATCH v3 3/9] KVM: i386: Re-inject #DB to guest with updated DR6 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: ehabkost@redhat.com, kvm@vger.kernel.org, maran.wilson@oracle.com, mtosatti@redhat.com, dgilbert@redhat.com, Liran Alon , Nikita Leshenko , Krish Sadhukhan , pbonzini@redhat.com, rth@twiddle.net, jmattson@google.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" If userspace (QEMU) debug guest, when #DB is raised in guest and intercepted by KVM, KVM forwards information on #DB to userspace instead of injecting #DB to guest. While doing so, KVM don't update vCPU DR6 but instead report the #DB DR6 value to userspace for further handling. See KVM's handle_exception() DB_VECTOR handler. QEMU handler for this case is kvm_handle_debug(). This handler basically checks if #DB is related to one of user set hardware breakpoints and if not, it re-inject #DB into guest. The re-injection is done by setting env->exception_injected to #DB which will later be passed as events.exception.nr to KVM_SET_VCPU_EVENTS ioctl by kvm_put_vcpu_events(). However, in case userspace re-injects #DB, KVM expects userspace to set vCPU DR6 as reported to userspace when #DB was intercepted! Otherwise, KVM_REQ_EVENT handler will inject #DB with wrong DR6 to guest. Fix this issue by updating vCPU DR6 appropriately when re-inject #DB to guest. Reviewed-by: Nikita Leshenko Reviewed-by: Krish Sadhukhan Signed-off-by: Liran Alon --- target/i386/kvm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/i386/kvm.c b/target/i386/kvm.c index 738dd91ff3cc..c8fd53055d37 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -3558,6 +3558,9 @@ static int kvm_handle_debug(X86CPU *cpu, /* pass to guest */ env->exception_injected =3D arch_info->exception; env->has_error_code =3D 0; + if (arch_info->exception =3D=3D EXCP01_DB) { + env->dr[6] =3D arch_info->dr6; + } } =20 return ret; --=20 2.20.1