From nobody Fri Oct 18 04:30:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1694810228; cv=none; d=zohomail.com; s=zohoarc; b=CqQdPy9sVPDUJtsmGtZCIoWyMwpMYNkJTUISwFxXvxI/ZlRihiy6zqrqwT99CVOrAkHx+e5WTM+ygICgJza/lfwfx8nFtiDAtLGYnlE/95qIvTa2oNNs2+yxLCYLUQiNIuxHzlAvx/oCc/1W6d6OB5Wl9Lj5xDogIL6cjPKsxsE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1694810228; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=7wGoc2pijXxcY9j1us0iBmY9wvDWyWmG1jGdxNOpvno=; b=W9Mi7Xls9tmvwbR4qM5+5jBI4+HIixZF1FJriGvGU/TeuuFET/jNPel6sbaFY5+/lk4NQpGHDJx+GC/BGaFEqo5x3OYb3l+zCYrkQ7lYFG7LzDOaAELzpSfmmwDuyzYYjlA4dWbg1Zwa+Ropl7gHuD73+XlQZSWAJk3c6F/UGjQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1694810228436928.0438780850305; Fri, 15 Sep 2023 13:37:08 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.603360.940332 (Exim 4.92) (envelope-from ) id 1qhFYP-0001Co-Tu; Fri, 15 Sep 2023 20:36:41 +0000 Received: by outflank-mailman (output) from mailman id 603360.940332; Fri, 15 Sep 2023 20:36:41 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qhFYP-0001Ch-R1; Fri, 15 Sep 2023 20:36:41 +0000 Received: by outflank-mailman (input) for mailman id 603360; Fri, 15 Sep 2023 20:36:40 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qhFYO-0000xj-PQ for xen-devel@lists.xenproject.org; Fri, 15 Sep 2023 20:36:40 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 91dfdee2-5407-11ee-9b0d-b553b5be7939; Fri, 15 Sep 2023 22:36:38 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 91dfdee2-5407-11ee-9b0d-b553b5be7939 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1694810198; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0efH8BOSizGTOHRB94i57CXHT600TrTwqOEk5f1bQW8=; b=KAKrgCbqZvQ0pQp67T2PONKE8SA6gUVZH83X9aKkukUP05AoryQbIXaf nVMzfqKT2049jIOvex4dPvz+cytVL2kls1QpOc29rRHERkIa+h1fKJ4Pq /LWsZ8bCZIYxKkQsE39lINOdVthWKDrQ0+xEWBOpa0oJ2D+tEcezokPlW k=; X-CSE-ConnectionGUID: 40xdC7HJRICoFGlJfSNwcw== X-CSE-MsgGUID: MNhrQ7DlQtyNeQeZ9jc8xw== Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none X-SBRS: 4.0 X-MesageID: 122825025 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.123 X-Policy: $RELAYED X-ThreatScanner-Verdict: Negative IronPort-Data: A9a23:LX78wqj/Dg1MY4UMjzqC9hFpX161VhAKZh0ujC45NGQN5FlHY01je htvWGuGP/bZYjPwKYx2b4yyoUMF7ZaHz99nHVc6ry1nRXgb9cadCdqndUqhZCn6wu8v7q5Ex 55HNoSfdpBcolv0/ErF3m3J9CEkvU2wbuOhTraCYmYoHVMMpB4J0XpLg/Q+jpNjne+3CgaMv cKai8DEMRqu1iUc3lg8sspvkzsx+qyo0N8klgZmP6sT7QaDzyJ94K83fsldEVOpGuG4IcbiL wrz5OnR1n/U+R4rFuSknt7TGqHdauePVeQmoiM+t5mK2nCulARrukoIHKN0hXNsoyeIh7hMJ OBl7vRcf+uL0prkw4zxWzEAe8130DYvFLXveRBTuuTLp6HKnueFL1yDwyjaMKVBktubD12i+ tREcCABRU+jpdiX67WVZe1OiP8FM8L0adZ3VnFIlVk1DN4jSJHHBa7L+cVZzHE7gcUm8fT2P pRDL2A1NVKZPkMJYw1MYH49tL7Aan3XWjtUsl+K44Ew5HDe1ldZ27nxKtvFPNeNQK25m27B/ DiWpTmhWExy2Nq37ByF6Evzquv2gTLdVbsfJuy6/a56nwjGroAUIEJPDgbqyRWjsWauVtQaJ 0EK9y4Gqakp6FftXtT7Rwe/onOPolgbQdU4O88Q5RyJy6HUyx2EHWVCRTlEAPQ5sOcmSDps0 UWG9/vrBDposPuWQHSSsLSOhTy3MCkRa2QFYEc5oRAtuoe55ttp11SWE4glSfTu5jHoJd3u6 2zSvCQV2JUxt+8g0IuU+XLJuBSzrYecG2bZ+T7rdm6i6wp4YqusaIqp9UXX4J58EWqJcrWSl CNawpbDtYjiGbnIzXXQG7tVQNlF8t7faFXhbUhT847NHthH01qqZshu7T53Py+F2e5UKGayM Cc/Ve68jaK/3UdGj4ctM+pd6Oxwl8AM8OgJsdiNNLJzjmBZLlPvwc2XTRf4M5rRuEYti7ojH pyQbNyhC30XYYw+kmvqF79Hju92ln1nrY82eXwd507/uVZ5TCTOIYrpzXPUNrxphE96iFq9H ylj2zuilEwEDbyWjtj/+o8PN1EaRUXX9rivw/G7gtWre1I8cEl4Uq+5/F/UU9A990ijvruSr y7Vt44x4AaXuEAr3i3RMyk5MO6+DMonxZ/5VAR1VWuVN7EYSd7HxM8im1EfJNHLKMQLISZIc sQ4 IronPort-HdrOrdr: A9a23:u7mL968T0nbFaF8WR/9uk+DgI+orL9Y04lQ7vn2YSXRuHPBw8P re5cjztCWE7gr5N0tBpTntAsW9qDbnhPtICOoqTNCftWvdyQiVxehZhOOIqVDd8m/Fh4pgPM 9bAtBD4bbLbGSS4/yU3ODBKadD/OW6 X-Talos-CUID: 9a23:ycw0lm6RMsz7AUlWVdssqBYEFut6Ul/n7VzXDWC8K2hSbqKeVgrF X-Talos-MUID: 9a23:LOFQuAVcJxKOSdHq/BrKhCtba+ts2ri/Lk00nKdXucLUJTMlbg== X-IronPort-AV: E=Sophos;i="6.02,150,1688443200"; d="scan'208";a="122825025" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu , Jinoh Kang Subject: [PATCH 6/7] x86: Extend x86_event with a pending_dbg field Date: Fri, 15 Sep 2023 21:36:27 +0100 Message-ID: <20230915203628.837732-7-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230915203628.837732-1-andrew.cooper3@citrix.com> References: <20230915203628.837732-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1694810229920100003 ... using the Intel VMCS PENDING_DBG semantics, and sharing storage with cr= 2. This requires working around anonymous union bugs in obsolete versions of G= CC, which in turn needs to drop unnecessary const qualifiers. Also introduce a pv_inject_DB() wrapper use this field nicely. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu CC: Jinoh Kang v2: * Split out of prior patch. --- xen/arch/x86/include/asm/domain.h | 18 ++++++++++++++++-- xen/arch/x86/include/asm/hvm/hvm.h | 3 ++- xen/arch/x86/x86_emulate/x86_emulate.h | 5 ++++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/d= omain.h index c2d9fc333be5..fd1f306222be 100644 --- a/xen/arch/x86/include/asm/domain.h +++ b/xen/arch/x86/include/asm/domain.h @@ -729,15 +729,29 @@ static inline void pv_inject_hw_exception(unsigned in= t vector, int errcode) pv_inject_event(&event); } =20 +static inline void pv_inject_DB(unsigned long pending_dbg) +{ + struct x86_event event =3D { + .vector =3D X86_EXC_DB, + .type =3D X86_EVENTTYPE_HW_EXCEPTION, + .error_code =3D X86_EVENT_NO_EC, + }; + + event.pending_dbg =3D pending_dbg; + + pv_inject_event(&event); +} + static inline void pv_inject_page_fault(int errcode, unsigned long cr2) { - const struct x86_event event =3D { + struct x86_event event =3D { .vector =3D X86_EXC_PF, .type =3D X86_EVENTTYPE_HW_EXCEPTION, .error_code =3D errcode, - .cr2 =3D cr2, }; =20 + event.cr2 =3D cr2; + pv_inject_event(&event); } =20 diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/= hvm/hvm.h index 6d53713fc3a9..ea966f4429f9 100644 --- a/xen/arch/x86/include/asm/hvm/hvm.h +++ b/xen/arch/x86/include/asm/hvm/hvm.h @@ -532,9 +532,10 @@ static inline void hvm_inject_page_fault(int errcode, = unsigned long cr2) .vector =3D X86_EXC_PF, .type =3D X86_EVENTTYPE_HW_EXCEPTION, .error_code =3D errcode, - .cr2 =3D cr2, }; =20 + event.cr2 =3D cr2; + hvm_inject_event(&event); } =20 diff --git a/xen/arch/x86/x86_emulate/x86_emulate.h b/xen/arch/x86/x86_emul= ate/x86_emulate.h index fbc023c37e34..e567a9b635d9 100644 --- a/xen/arch/x86/x86_emulate/x86_emulate.h +++ b/xen/arch/x86/x86_emulate/x86_emulate.h @@ -78,7 +78,10 @@ struct x86_event { uint8_t type; /* X86_EVENTTYPE_* */ uint8_t insn_len; /* Instruction length */ int32_t error_code; /* X86_EVENT_NO_EC if n/a */ - unsigned long cr2; /* Only for X86_EXC_PF h/w exception */ + union { + unsigned long cr2; /* #PF */ + unsigned long pending_dbg; /* #DB (new DR6 bits, positive polarity= ) */ + }; }; =20 /* --=20 2.30.2