From nobody Sat May 18 12:12:31 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1653563580; cv=pass; d=zohomail.com; s=zohoarc; b=PL0xJsrQwnE5kBCu0C+7ics0CdiOlQIrZzhV87POgdOTJJoH6W7xpjbHJbpIIjXwIzzCrvQNroEFpX1AYrHaYQu4WDLqhRFKlN4hfdsO3H/EQr8ERieqPsr6GZy6V2OYUnDJzL+Mo0+EMgVb5PrDTLblU8bJM7LZ5dBqp2f8tss= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653563580; 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=Lk51GUgUWIAXFPTQpLQYHdKMy/7fDVifoFw+Du1GkSU=; b=aEILjh2NbwNcdKQMPzxmVDDZVNwj+7iZfS6tjHJICKJfPgw3DLf+CcO0Gjz96W9EMGTB55u5/5ZdLHazAk972CoLeJIuLnKH2CzzoFFce/DLwtnbz948DlD/vahX5je2aDGDv9uySvf7EoeXjbqziTRNSlDdMMDtfohhDPdeR7I= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 1653563580041747.8997973339439; Thu, 26 May 2022 04:13:00 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.337556.562186 (Exim 4.92) (envelope-from ) id 1nuBPq-0003Rt-Ky; Thu, 26 May 2022 11:12:30 +0000 Received: by outflank-mailman (output) from mailman id 337556.562186; Thu, 26 May 2022 11:12:30 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nuBPq-0003Rm-I7; Thu, 26 May 2022 11:12:30 +0000 Received: by outflank-mailman (input) for mailman id 337556; Thu, 26 May 2022 11:12:29 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nuBPp-0003PI-Hg for xen-devel@lists.xenproject.org; Thu, 26 May 2022 11:12:29 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id b946a42a-dce4-11ec-bd2c-47488cf2e6aa; Thu, 26 May 2022 13:12:27 +0200 (CEST) Received: from mail-mw2nam10lp2107.outbound.protection.outlook.com (HELO NAM10-MW2-obe.outbound.protection.outlook.com) ([104.47.55.107]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 26 May 2022 07:12:25 -0400 Received: from DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) by PH0PR03MB6527.namprd03.prod.outlook.com (2603:10b6:510:ba::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Thu, 26 May 2022 11:12:23 +0000 Received: from DS7PR03MB5608.namprd03.prod.outlook.com ([fe80::5df3:95ce:4dfd:134e]) by DS7PR03MB5608.namprd03.prod.outlook.com ([fe80::5df3:95ce:4dfd:134e%4]) with mapi id 15.20.5293.013; Thu, 26 May 2022 11:12:23 +0000 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: b946a42a-dce4-11ec-bd2c-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1653563547; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=IjSmW8a1Um+GGMYx28eSmPuDoMRq2A1WoAd0TjwqTSk=; b=J1wkBp5nfK8DjKcJOJPvUvAqrW1aKf/f5v37pVy3zWUJ/3o1etHL3dC8 POSPTV4cpYfFhFxAZdALYwgkLb5w7dmeVR3TwPGVAixl/kGqDQohbA52i +Lf1IL9qCfLMAx/nOEwaEPpJXChb6Ttewm0w7ySPLBviAlo5NSJobobF+ w=; X-IronPort-RemoteIP: 104.47.55.107 X-IronPort-MID: 72630640 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:2yE1f6+oXuqEo7YpKA+aDrUDmn+TJUtcMsCJ2f8bNWPcYEJGY0x3y 2pOXD3SPKyIZTP0Ldp2OYS2/RtTupLXnIRlQVNsrn88E34SpcT7XtnIdU2Y0wF+jyHgoOCLy +1EN7Es+ehtFie0Si+Fa+Sn9T8mvU2xbuKU5NTsY0idfic5DnZ44f5fs7Rh2NQw3ILnW1rlV e7a+KUzBnf0g1aYDUpMg06zgEsHUCPa4W5wUvQWPJinjXeG/5UnJMt3yZKZdhMUdrJ8DO+iL 9sv+Znilo/vE7XBPfv++lrzWhVirrc/pmFigFIOM0SpqkAqSiDfTs/XnRfTAKtao2zhojx/9 DlCnbuiCisTYqzupMc6dEVYITw9OIsb/LCSdBBTseTLp6HHW13F5qw2SWQJZ8gf8OsxBnxS/ /sFLjxLdgqEm++93LO8TK9rm9gnK87oeogYvxmMzxmAVapgHc+FHviMvIcHtNszrpkm8fL2f c0WZCApdB3dSxZOJk0WGNQ1m+LAanzXLGcG8wrL+fJfD277wit207TIDOLpPePRd8JvowWHh G3C8DGsav0dHJnFodafyVq8i+mKkS7lVYY6ELyj6uUskFCV3nYUChAdSR28u/bRokyjXZRZI k8d+CsrpIAz8lCmSp/2WBjQiH2JoB8aHcZRGusS6QeRx66S6AGcbkAGRDNcbN0ttOctWCcnk FSOmrvBGjhHoLCTD3WH+d+pQSiaPCEUKSoHenUCRA5cu937+thr0VTIU8ppF7OzgpvtAzbsz juWrS84wbIOkcoM0Kb99lfC696xmqX0oscOzl2/dgqYAslRPeZJu6TABYDn0Mt9 IronPort-HdrOrdr: A9a23:lW59pavwSjrciKMZFBR1BMFk7skDjNV00zEX/kB9WHVpm6yj+v xGUs566faUskd0ZJhEo7q90ca7Lk80maQa3WBzB8bGYOCFghrKEGgK1+KLrwEIcxeUygc379 YDT0ERMrzN5VgRt7eG3OG7eexQvOVuJsqT9JjjJ3QGd3AVV0l5hT0JbTpyiidNNXJ77ZxSLu v72uN34wCOVF4wdcqBCnwMT4H41qf2fMKPW29+O/Y/gjP+9Q+V1A== X-IronPort-AV: E=Sophos;i="5.91,252,1647316800"; d="scan'208";a="72630640" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oZTsr2ihrAEUmvE3vLt102ZtesSSmuVPWN1lszmUZkQQnblr2976XIxdyNGV98ntKEJt+pSpeJrxDqwcZo+P7VJ3FZTCb5iir0LAlfezy64JoLAZ7juqjb3xX6zwOc07/KkjtQ6KdggE2V+hdVmDuNsO5Be1DvTHljagjuge703NdBVt10q0PBWX73fLp2LBY2EhGZHZ8zWP7gsDerrnmOgvK7zGbmgJGGoE5sESMnlAeriJADkKYeSmCbBS2AIVY8lzJnMZDJtvSnKfKJet0euqj3W5ifAPa+7YCe/HtUAgZYwm3xpKfVVG8+bRpyPRmhCIpiekt/ua7jaPThsuCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Lk51GUgUWIAXFPTQpLQYHdKMy/7fDVifoFw+Du1GkSU=; b=IoVD4iHAwT0dRCdY4PbKfTcCeBBsaNpsArhyIVWCbfbxlqFPWR0gIY4CxkUEoYRaEmducvzRqtV6vSnTBk+RN1wy9gCR8HUZv//jmcwfWXmJWNKzJEVKjWiOBZ0AdDiUwXJonT4HlxaFSXz+aWYYo/igakArWUwmN5dxjGlF5xPqRr9IEp8fUX3OiW5KnD8FBjJC0IEGB1ehBtRSCc3t0GZATnIa/blcDVw+i0bVW9Bo09LTCJXuxfPfmW5uJSmTfDBLO8ZrzryQg0RANy7eKIDH49cOIIpHt6+GmMVQF9bd+nLWpJIL9QoHA3zEcBqQGWfsfe2G5CQmeKpsYfoftA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Lk51GUgUWIAXFPTQpLQYHdKMy/7fDVifoFw+Du1GkSU=; b=k0vSU3nu51WbGrE5TP2MwqI3mQq/ihEJgSwXg0/Ox9jbe/gXMTkPFzbSVZOG1JGKUYxM/lZGQK5kQu4ZWCUYCuy3f4vGjTabEp8HQNs4CzDZ07oIJMQdIxQCpkRgffDKPaMGtBgdsjGYcNXMHVaiXwFWmLBPlQDInW0f4y2XGz4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Jun Nakajima , Kevin Tian , Jan Beulich , Andrew Cooper , Wei Liu Subject: [PATCH v2 1/3] x86/vmx: implement Bus Lock detection Date: Thu, 26 May 2022 13:11:55 +0200 Message-Id: <20220526111157.24479-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220526111157.24479-1-roger.pau@citrix.com> References: <20220526111157.24479-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0472.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a2::28) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 84c91296-d62f-4b61-6c93-08da3f089bc2 X-MS-TrafficTypeDiagnostic: PH0PR03MB6527:EE_ X-LD-Processed: 335836de-42ef-43a2-b145-348c2ee9ca5b,ExtAddr X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8FdQy/bgXTeZ8ARRoWXDk2Nh/pUAdUL6TVVI+hst4EedvK8OXnnPQwM6poc3ZDzrcwCZdGY77R4aLOTjtOXwhJETvEaZ5/zdLuWywz9kf6pcDAAIKDgszyrJV4+2QnJ0ran5hmBH62aTo2xibF8wJSGHvNshMKtAxydPpLpQcksfqV8etb3k3I3tL4EUUtCJF4EiRtUiUZm37B3GswPTW1UZop84V9q/Y8yYCJAV8rYFc863NkB4xA/JzRgprU1TKv4fKaKwt7RvyfIqljfJdMV3sSYyQ6ICYXmyb2CO9FjhS344v6tE+1lcBbCtTXPZbSuQxMimPdRBGrg8jmN/ZUeye/OGeqKnsxI76c4RRFXdOpoma1hf0JAsJntBXrBc0oy6kvthpJzeyOqn+Zgg9flny8TMjFCxhnYnQmDWkOHANYJ7yfhN7VA0/5287Jj9cdeag5MJSnfbPabL7EzH15NF4MvCW9d+USDhG0n/VvBN2L47tewXJCU3f91nuDJL/JEX++Z1WZMy9LqftUAycMx8+pj5PpS5ecLazu9c7TfoYvpvuQzyw5DugXW9pff+wPxnYdudoi1hrHIExgpnPKusVKtwWGmjykqyGirUJMVcbRgPTqtXj0W+Br9xKYBC7nyGFO+pxF8TSZ04uydSfw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(5660300002)(86362001)(4326008)(66476007)(66556008)(66946007)(8676002)(8936002)(54906003)(316002)(6916009)(38100700002)(1076003)(6506007)(82960400001)(6512007)(26005)(6486002)(83380400001)(6666004)(186003)(508600001)(36756003)(2906002)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bVZwOTlNS1RqVE1aQ3JWOExvT1RNQ255WUNWZVRwTEM4eFVOejFnSHZHazRF?= =?utf-8?B?SWl5TFhJeVI3RWJPWGJ3bmJkQVVtYWFMSlJBYXhValZaamJoOWtTbGdWeXFX?= =?utf-8?B?TmkvRTkxQVkxTG9JTml6b1NwQy83eWVXMUlOVkIwaHhnTmZQaWxWSm9NeWRD?= =?utf-8?B?dk1YN2VVZExIQ3Bkb1B5dXV1cktSbmJFOFVDeDQxY000dDJtNDdrKzFKU3A1?= =?utf-8?B?TVh3U3hkTGNhc0tUdlR0RWN6OFB0WUdPcUpkaDBYVDNVeld6RXlqclhPNlVS?= =?utf-8?B?TW1SUmlRTXZvZSs0czFMbTczOEdIWVN4ekI5eGw4a3lOR2JseXcrTDlOSW1p?= =?utf-8?B?eXFZa0VLTmtVL2dQN1RoOVh5TmcvLzlzQ2Q3czFKTkM3YXpsKzZIMFJJMjl6?= =?utf-8?B?S25OcG1ZUncxYTRSaDJzY1FRRDZMTkN4WE92MUFzRCtiYXZra05qMmp3dU4w?= =?utf-8?B?Mzh3cW4xU0JDN2pUUkZ4dmpNRkd1OTVzY29QZ0lmaldieTl3TWRQWDgvbnFw?= =?utf-8?B?RlRUU3VaVGhCNGdQTFpsc1pTTTBhWW9MY3YzcFNvNVA3MDI3NS9KL0RIRmFT?= =?utf-8?B?Z3RwUW4yWWlWZWxjSkZHalZBZkQ4WEVGUUhNTjlVeWxYeFdadzQ3YVp1ZXB1?= =?utf-8?B?OEJDZmhDak15UGh0bktubWpQY2FERW1vNXAvUWhiUCtieFBMRWZmeGJmSFdB?= =?utf-8?B?WktrTEtkRG83dEZPaW0rWFczME9sTEliK0dzM1F0aVdHdStHbHFuMmZjeVJR?= =?utf-8?B?ampqM1dCWEF6azI0V0RNNUlzUmgybUFRLzlpRU5HeVdLR1JuS3VlZnFHbkZT?= =?utf-8?B?MTl2VnNnY1I2RUI1cm9UUk0rK0ZWT25wdFhMUGEwWkdDVGs1cC9uZzhwMlI4?= =?utf-8?B?QnhDeDVISGZ3aFQ3dHp4aVFZckxCcHFTTEROb1FPeVNCamJac1RPTFBJcmdh?= =?utf-8?B?NWxUK2k1NXJFTXQ1Rkd2Ymw0Q25BSExBQzlxYk5YY1k5S1pUb0xuajBzbG9D?= =?utf-8?B?OGdqeUdrekFOREdBSkpTWWdwQ3R5Z0RwZTNoZDMyVVB5d0srMHNudzFNTnVs?= =?utf-8?B?OFBKbThTRzExTVk4andjdjI4cXlhajNZUWlRSVlGbmlJR1BMcTd1WGdrMGVl?= =?utf-8?B?THhIWU5Gak1OTkM2cWdtU1ZIbXlUN0hic2NUbkJtZjhUS0F4UTNRUEQ3My92?= =?utf-8?B?cTJvQ2E0WVFYTGhldk5ySDFlVzhuTDRpU0NhL0lZdjBRQzg0TGtBT3pCOGdx?= =?utf-8?B?aWFodCt1dkx1OXBaTVMwVXFnZy9DS3cvcWk3aDdncHUzRFJiVWJvWE1JR0ZT?= =?utf-8?B?R0ppRnhvWmZuYjlvN3RpMnIzb0lkcDdJcG9iKzl0ZE1tbk1YeW14bFRQMXJu?= =?utf-8?B?OTZJS09ZVS9BaGlFWmhISDB1Y2NLSXVXenZrd3NXcDFUejNYelYrRXBLdnhw?= =?utf-8?B?andtNUlBcmdkSlVuVGNhQnhDdy8rVUxmcE1GYmN2QTYwTFQyWlNwdXRoOWNq?= =?utf-8?B?ZUkrOGpPN29zMTNZbWlCYjRVYWFZbDg4aGg2M29mQzdYWVQ0RDA0SXY0bFpz?= =?utf-8?B?dmtRd0ZaYVpRRCsrbzlxYzRLM2JvUnZvSFdFUkd5cWl6MzJ3OFZQelpxMFgx?= =?utf-8?B?RHZoOXZzZUphcXRKUnJuVGtCR1p4TEJsNXlGYWNmU3c5bldERmxibzNXa0Vh?= =?utf-8?B?c1BSSWd3REtMU0xxMUtnVTh1RGYweGZJb2VucndWYXU2eTlZOHpyTWJJb28w?= =?utf-8?B?RGc3NzR0OWo2V3NHc3pOci9PekdobkdSSTVodmRtK0pFVkFFVWRiYjlPd1U0?= =?utf-8?B?UkhJbzFxRmltQ3l3d1JTdXdsaGljb0l0MHVBYm9yY1QxY3NXWGVFM3paZ1ZU?= =?utf-8?B?eXRiWlptTVpIdk9GVjYvU1Fka1JGUDVJUGZDTWRlYVVlN3lUT3hUS1dJczM3?= =?utf-8?B?K1dWbDk3aEp1SGppMk1lZzczWXR0dnlEVzk0RlY1RE1Wa0hFZDN5UUtpR1hP?= =?utf-8?B?ckVBbzVFWWxLa0VTem9pbmNRajlsWWVZajEvNkthZFY0TGZvV3Zkcld0d2tJ?= =?utf-8?B?Rit2ck9OR0pZWVQ3b0hXeFV0VEVwM3hvNFY1Zk1kRURVQWRCSjRxWTRjdzRy?= =?utf-8?B?ZlhPZGo3RUUyazVVKzFpRkxJMFJFUHB3RzV2WEJEeENyaFNTWFJnbzBOVnM2?= =?utf-8?B?Q2o3R3YxUkZRSkFERmN1TW1JdXpveHFidXBQTWxnam9IZHAwWlZYK3hwcE11?= =?utf-8?B?UXVmSDF6WlVFbExnM3l0OE9BbnBTQWxJUU11UzFZWFRxNnZHR2ZDcmR2TnB2?= =?utf-8?B?U0d5USs4cXovT0xwVEErYnoxaVdFazNQdzcwQkFpRTEvWEV3ZzQyMGE3U05N?= =?utf-8?Q?FheAvB8KWyCVqvvA=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 84c91296-d62f-4b61-6c93-08da3f089bc2 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2022 11:12:23.3094 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Tfwr3fYZuh+tbeBpJzMNMUOmGmTleqFLZSW2Ni3hDecWMqVc5Oj3xu8wpGTG+lXLc8gkuXvoPhHeMNGI3K8rFg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB6527 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1653563582075100003 Add support for enabling Bus Lock Detection on Intel systems. Such detection works by triggering a vmexit, which ought to be enough of a pause to prevent a guest from abusing of the Bus Lock. Add an extra Xen perf counter to track the number of Bus Locks detected. This is done because Bus Locks can also be reported by setting the bit 26 in the exit reason field, so also account for those. Suggested-by: Andrew Cooper Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Jan Beulich --- Changes since v1: - Adjust commit message. --- xen/arch/x86/hvm/vmx/vmcs.c | 4 +++- xen/arch/x86/hvm/vmx/vmx.c | 18 ++++++++++++++++++ xen/arch/x86/include/asm/hvm/vmx/vmcs.h | 3 +++ xen/arch/x86/include/asm/hvm/vmx/vmx.h | 2 ++ xen/arch/x86/include/asm/perfc_defn.h | 4 +++- 5 files changed, 29 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c index 56fed2db03..d388e6729c 100644 --- a/xen/arch/x86/hvm/vmx/vmcs.c +++ b/xen/arch/x86/hvm/vmx/vmcs.c @@ -209,6 +209,7 @@ static void __init vmx_display_features(void) P(cpu_has_vmx_virt_exceptions, "Virtualisation Exceptions"); P(cpu_has_vmx_pml, "Page Modification Logging"); P(cpu_has_vmx_tsc_scaling, "TSC Scaling"); + P(cpu_has_vmx_bus_lock_detection, "Bus Lock Detection"); #undef P =20 if ( !printed ) @@ -318,7 +319,8 @@ static int vmx_init_vmcs_config(bool bsp) SECONDARY_EXEC_ENABLE_VM_FUNCTIONS | SECONDARY_EXEC_ENABLE_VIRT_EXCEPTIONS | SECONDARY_EXEC_XSAVES | - SECONDARY_EXEC_TSC_SCALING); + SECONDARY_EXEC_TSC_SCALING | + SECONDARY_EXEC_BUS_LOCK_DETECTION); if ( _vmx_misc_cap & VMX_MISC_VMWRITE_ALL ) opt |=3D SECONDARY_EXEC_ENABLE_VMCS_SHADOWING; if ( opt_vpid_enabled ) diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index f08a00dcbb..476ab72463 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -4065,6 +4065,16 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs) =20 if ( unlikely(exit_reason & VMX_EXIT_REASONS_FAILED_VMENTRY) ) return vmx_failed_vmentry(exit_reason, regs); + if ( unlikely(exit_reason & VMX_EXIT_REASONS_BUS_LOCK) ) + { + /* + * Delivery of Bus Lock VM exit was pre-empted by a higher priorit= y VM + * exit. + */ + exit_reason &=3D ~VMX_EXIT_REASONS_BUS_LOCK; + if ( exit_reason !=3D EXIT_REASON_BUS_LOCK ) + perfc_incr(buslock); + } =20 if ( v->arch.hvm.vmx.vmx_realmode ) { @@ -4561,6 +4571,14 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs) vmx_handle_descriptor_access(exit_reason); break; =20 + case EXIT_REASON_BUS_LOCK: + perfc_incr(buslock); + /* + * Nothing to do: just taking a vmexit should be enough of a pause= to + * prevent a VM from crippling the host with bus locks. + */ + break; + case EXIT_REASON_VMX_PREEMPTION_TIMER_EXPIRED: case EXIT_REASON_INVPCID: /* fall through */ diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h b/xen/arch/x86/include= /asm/hvm/vmx/vmcs.h index 9119aa8536..5d3edc1642 100644 --- a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h +++ b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h @@ -266,6 +266,7 @@ extern u32 vmx_vmentry_control; #define SECONDARY_EXEC_ENABLE_VIRT_EXCEPTIONS 0x00040000 #define SECONDARY_EXEC_XSAVES 0x00100000 #define SECONDARY_EXEC_TSC_SCALING 0x02000000 +#define SECONDARY_EXEC_BUS_LOCK_DETECTION 0x40000000 extern u32 vmx_secondary_exec_control; =20 #define VMX_EPT_EXEC_ONLY_SUPPORTED 0x00000001 @@ -345,6 +346,8 @@ extern u64 vmx_ept_vpid_cap; (vmx_secondary_exec_control & SECONDARY_EXEC_XSAVES) #define cpu_has_vmx_tsc_scaling \ (vmx_secondary_exec_control & SECONDARY_EXEC_TSC_SCALING) +#define cpu_has_vmx_bus_lock_detection \ + (vmx_secondary_exec_control & SECONDARY_EXEC_BUS_LOCK_DETECTION) =20 #define VMCS_RID_TYPE_MASK 0x80000000 =20 diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmx.h b/xen/arch/x86/include/= asm/hvm/vmx/vmx.h index 8eedf59155..03995701a1 100644 --- a/xen/arch/x86/include/asm/hvm/vmx/vmx.h +++ b/xen/arch/x86/include/asm/hvm/vmx/vmx.h @@ -159,6 +159,7 @@ static inline void pi_clear_sn(struct pi_desc *pi_desc) * Exit Reasons */ #define VMX_EXIT_REASONS_FAILED_VMENTRY 0x80000000 +#define VMX_EXIT_REASONS_BUS_LOCK (1u << 26) =20 #define EXIT_REASON_EXCEPTION_NMI 0 #define EXIT_REASON_EXTERNAL_INTERRUPT 1 @@ -219,6 +220,7 @@ static inline void pi_clear_sn(struct pi_desc *pi_desc) #define EXIT_REASON_PML_FULL 62 #define EXIT_REASON_XSAVES 63 #define EXIT_REASON_XRSTORS 64 +#define EXIT_REASON_BUS_LOCK 74 /* Remember to also update VMX_PERF_EXIT_REASON_SIZE! */ =20 /* diff --git a/xen/arch/x86/include/asm/perfc_defn.h b/xen/arch/x86/include/a= sm/perfc_defn.h index b07063b7d8..d6eb661940 100644 --- a/xen/arch/x86/include/asm/perfc_defn.h +++ b/xen/arch/x86/include/asm/perfc_defn.h @@ -6,7 +6,7 @@ PERFCOUNTER_ARRAY(exceptions, "exceptions", 32) =20 #ifdef CONFIG_HVM =20 -#define VMX_PERF_EXIT_REASON_SIZE 65 +#define VMX_PERF_EXIT_REASON_SIZE 75 #define VMEXIT_NPF_PERFC 143 #define SVM_PERF_EXIT_REASON_SIZE (VMEXIT_NPF_PERFC + 1) PERFCOUNTER_ARRAY(vmexits, "vmexits", @@ -125,4 +125,6 @@ PERFCOUNTER(realmode_exits, "vmexits from realmode= ") =20 PERFCOUNTER(pauseloop_exits, "vmexits from Pause-Loop Detection") =20 +PERFCOUNTER(buslock, "Bus Locks Detected") + /*#endif*/ /* __XEN_PERFC_DEFN_H__ */ --=20 2.36.0 From nobody Sat May 18 12:12:31 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1653563580; cv=pass; d=zohomail.com; s=zohoarc; b=Jffet8CGUadGPFO7QIhZ78/XT80hAxnteGGiAE90BVW1QvMleZ7yMfKwNySX4O66hMGQGouH1TokatS21MW7GAoN8Sf4Ek89XCq2XtvtEpPGQwdkUJtcvprWs/IV0Kv7uGbVQYlHw3EPB0mJ+s1Dgjt/sES5MZuyz00MdpkWoqk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653563580; 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=+B7jXwaQnmE/NSaDWI4p/4Ntnz7GpbMI32FmcxFI1dg=; b=Dq+OiTF6ozO3TexNF6IjvkZDOcQK7KssYWeJ/FQYxyQKciz2wHILhABlc2Ey7vx2kJG4z5UdZ8Ir5JCedZswZkpTxbLX3F899VwEsuZ81F9sUwjyQ2O7dx7QgvGIQhaHw1nu+sbw/aqJ/JKX1ELKg9bY3pyI9y0Nl+g95xtvxw4= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 1653563580081300.4235700981212; Thu, 26 May 2022 04:13:00 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.337557.562197 (Exim 4.92) (envelope-from ) id 1nuBPs-0003iU-VV; Thu, 26 May 2022 11:12:32 +0000 Received: by outflank-mailman (output) from mailman id 337557.562197; Thu, 26 May 2022 11:12:32 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nuBPs-0003iN-Rk; Thu, 26 May 2022 11:12:32 +0000 Received: by outflank-mailman (input) for mailman id 337557; Thu, 26 May 2022 11:12:31 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nuBPr-0003PI-Hy for xen-devel@lists.xenproject.org; Thu, 26 May 2022 11:12:31 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id bb814efc-dce4-11ec-bd2c-47488cf2e6aa; Thu, 26 May 2022 13:12:30 +0200 (CEST) Received: from mail-co1nam11lp2169.outbound.protection.outlook.com (HELO NAM11-CO1-obe.outbound.protection.outlook.com) ([104.47.56.169]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 26 May 2022 07:12:29 -0400 Received: from DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) by PH0PR03MB6527.namprd03.prod.outlook.com (2603:10b6:510:ba::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Thu, 26 May 2022 11:12:27 +0000 Received: from DS7PR03MB5608.namprd03.prod.outlook.com ([fe80::5df3:95ce:4dfd:134e]) by DS7PR03MB5608.namprd03.prod.outlook.com ([fe80::5df3:95ce:4dfd:134e%4]) with mapi id 15.20.5293.013; Thu, 26 May 2022 11:12:27 +0000 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: bb814efc-dce4-11ec-bd2c-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1653563550; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=PBMWe2e5tnSEdJ6Bv9dpHzpzqoZNTScW7UnwX7GdXCc=; b=AE+kmoaam++d7ygjxWOp5M+kelb3goE+19yt3GD+b8uaQyIFXVVPr5fA ApOyLWJ1GxDjVx5gRiUrIEXVB7qgowGm5lhWyRLm5THnpgzaPPlz8rz5T gZ9Sy+zMB3qZ1UT13TfAgoX+Bg0dQI3rlbokimj2YGJBoxlGMV8o/xRrt I=; X-IronPort-RemoteIP: 104.47.56.169 X-IronPort-MID: 72630641 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:iNNw7qkzJIOpRukJDxFHDjXo5gybJ0RdPkR7XQ2eYbSJt1+Wr1Gzt xIfC2uFOfnYMWqgKIh1YNzg9B8D7MeAztNmTwdopXo9ECMWpZLJC+rCIxarNUt+DCFioGGLT Sk6QoOdRCzhZiaE/n9BCpC48T8kk/vgqoPUUIYoAAgoLeNfYHpn2EsLd9IR2NYy24DkWV3V4 LsenuWEULOb828sWo4rw/rrRCNH5JwebxtB4zTSzdgS1LPvvyF94KA3fMldHFOhKmVgJcaoR v6r8V2M1jixEyHBqD+Suu2TnkUiGtY+NOUV45Zcc/DKbhNq/kTe3kunXRa1hIg+ZzihxrhMJ NtxWZOYFlonbpT+nckkfTJRMQpmHJUb9YDCLi3q2SCT5xWun3rE5dxLVRhzFqpBv+F9DCdJ6 OASLy0LYlabneWqzbmnS+5qwMM+MM3sO4BZsXZlpd3bJa9+HdafHOOXu5kBgmZYasNmRJ4yY +IDbjVidlLYagBnMVYLEpMu2uyvgxETdhUH8gzO/fRrugA/yiRS14CyPcfZQOa0YuYJxhiIt yGd0U3mV0Ry2Nu3jGDtHmiXrv/Cm2b3VZwfEJW89+V2mxuDy2oLEhoUWFCn5/6jhSaWWc9Zb Uod+SMsrK073E2tUtT5GRa/pRasvRMCWtwWD+wz7imMzLbZ50CSAW1sZjxLZcEitcQ2bSc3z VLPlNTsbRRwtJWFRHTb8a2bxQ5eIgAQJG4GICQDFA0M5oC6pJlp10yeCNF+DKSyk9v5Xynqx CyHpzQ/gLNVitMX06K8/hbMhDfESoX1czPZLz7/BgqNhj6Vrqb8D2B0wTA3Ncp9Ebs= IronPort-HdrOrdr: A9a23:OKsqgaudjBiRXfPL0vLFpIZk7skDjNV00zEX/kB9WHVpm6yj+v xGUs566faUskd0ZJhEo7q90ca7Lk80maQa3WBzB8bGYOCFghrKEGgK1+KLrwEIcxeUygc379 YDT0ERMrzN5VgRt7eG3OG7eexQvOVuJsqT9JjjJ3QGd3AVV0l5hT0JbTpyiidNNXJ77ZxSLu v72uN34wCOVF4wdcqBCnwMT4H41qf2fMKPW29+O/Y/gjP+9Q+V1A== X-IronPort-AV: E=Sophos;i="5.91,252,1647316800"; d="scan'208";a="72630641" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oVWWVI1/eWU1EoO1flrPBYmt2KOI82+nHJu1GiEsU8jbBA6G0qnLDnDJExQm4tW4TFHgfIopS0KQCqunUHYEtBYJFfuKxQp4AkPmoHxb6k2wuIKNRXRbWwzDldXRUtgsj7b3azKtvR6GMpjHfNXdFPIUMQjXjT6kNaZtJ8gRTv0LjLnYzmAEpJCKl89XJCdFhPD/dSdDvNBW4UffYCHTMsSMDXhH+AqOun1fsiiRbIcJwAAtY1B/q3cc0uuPISlKt+/GcuGXrAaFllsbV4UHRnyfou1Ysfhk6Z7GiYH06kVvncvit5lfWGwX8NF2qNADhvNRgNRoSSoxjLcix5JFrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+B7jXwaQnmE/NSaDWI4p/4Ntnz7GpbMI32FmcxFI1dg=; b=Wzilfgy+UBiWaaoOjQojBobMfW6DQ2m2uTjtQFPTwKzDVlOXhBb/VuDlRNc/bH707hKrTTgGJ8N8IHfgjtU2bC1GUyO4herJ/onxCeRoDxY5c1aGBx5+p/DIpe/n2yGg8ecZVBp8cgygHZ11bgj4Fp9wnLthtvQrFTnnZUgJWZUHsak1EKCrcwFWdk2NnM71XBmg+E2oQ28gxIHdO2LHYLLRlLhJRzb82/RZF5IZBet4p53Sd4M47vbff1uzeOeyjp+mcliAdxiIJncfsXc77BLIPjhjpVpMofZVK2hQiMI+VSkKItvwnWk8nBKRkOlbGGodxeJ2kU7DCvbf/ScQWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+B7jXwaQnmE/NSaDWI4p/4Ntnz7GpbMI32FmcxFI1dg=; b=V9eOqVAxRYcFQIElI88n3GxmHbKI0rrAZQGwfSftIZdqwRXGUB6zYTk/BsLbYvTt8338rU0+zACnIFEhgq9/d4r4mvlpi/ep3jr3pEOhUdOysgErkNzKw4CB5fTiCyyefS0C1nmjUxGefTxuqcx4ThmYmLcPW2NA/YoMQszgelU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Jun Nakajima , Kevin Tian , Jan Beulich , Andrew Cooper , Wei Liu Subject: [PATCH v2 2/3] x86/vmx: introduce helper to set VMX_INTR_SHADOW_NMI Date: Thu, 26 May 2022 13:11:56 +0200 Message-Id: <20220526111157.24479-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220526111157.24479-1-roger.pau@citrix.com> References: <20220526111157.24479-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0084.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2bd::17) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 42d24729-1ae0-4802-f36f-08da3f089e16 X-MS-TrafficTypeDiagnostic: PH0PR03MB6527:EE_ X-LD-Processed: 335836de-42ef-43a2-b145-348c2ee9ca5b,ExtAddr X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HXZt2q4SEoFqqxfRL7n++shMOb0AWEQaoNkX0MvxafZRym3oXFNJF9UteMFsSobiBE35wGp79+LVZJNRZZglUVjM57euUfA1Lgy7fUwcwrGNAmm1oHu1xlNnhhI3zkr5GaQty0CmPf2a8MBXI/fvx5tx/YbHUyL5qmxmGshWTfDp1Iuut1QCKPkESPZdIk6bG4S8ULrZIz/VQXUE5I0IKunhQWjzX+RnGzjF28Oq2gwD5ZIFwEhvkebS6gkn6BN/hmq2Kvu0clHUe1eFo3kUSLfYNuHC3uxZv47dZbTZfVM7cW3HV0kk2bXMkHb9J9TJZpFOpu1v+WAIPYxBP3/6I3O45nymF3b/odx9I07Zm2rhPCuPiF74lt16Cxj+PVvTAybDSUPgRKBJesfXM5yjoMTItt81WP80dvGJ8ugwKOTAZoM+gHE6amyt9AEMbklyMW774bwfALzcdiWLWZSNc0VZHW3XeaTk0A4v9VpmldAS9XmHBCmxcspQlioi8FrorLQ9Aaygmlu21ZwOqbCrpDBculeylF0Vo7o15TfMXZxN/KfTzjaVzN16Qncits/2qIh41wrpybaJLB9b6uHfM+XyM1z0la0DAtud+UHg4VDxnQplGLHsxiYbDLSY1TC5L7aEDfbGupgXnM3kDZOFTQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(5660300002)(86362001)(4326008)(66476007)(66556008)(66946007)(8676002)(8936002)(54906003)(316002)(6916009)(38100700002)(1076003)(6506007)(82960400001)(6512007)(26005)(6486002)(83380400001)(6666004)(186003)(508600001)(36756003)(2906002)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dFR2SncvbXMxK1RpUjM5SFhvMHJSUFdOb3QvbENPMGM1czVkb3llRTdaM3R0?= =?utf-8?B?R3V0RVNCbEZvOXE1cGlIR0QrRG51cEhBMEhNNDJ1VlRpdjY1TW5UK3pMSFhD?= =?utf-8?B?bWdXQlozTWc3d2J2SEloU2VSSHlNdU5ReTFCSnJ3dVRnMmZiVk15N3UzbStl?= =?utf-8?B?RHZPQnMzdDk2aUtwZEVYVmM5bzJXREVBSURvSXlZeXYxWTZMQ1pwLzRlUWNF?= =?utf-8?B?ZU9sMVVTa01Gcnp0VHNGOGFxSnNZT20rRUtZSVFDek1GMkR5SzhhQjFEaWhk?= =?utf-8?B?bVhWd2djZGZQYUwxQ05taDUwRXRXMDh4ckUvMUh3MkxvMHJzOXB4c1ZSaVZL?= =?utf-8?B?blBIS0FYV3BJb1l2eWFHZDFoWEFQSFFLR0pKemFxVHlGNkVaVUtoUVJCcGVR?= =?utf-8?B?cmZqN29XYytFNlNZSG1MUWI2N3hONUV2VVAraWlOcTd1dnVOWUdaNEV6eWlN?= =?utf-8?B?NSt3SWJZQitvQ3Y0YithZUk2RHVMaGlzTkNrTk4rQnZNY3ZBTkxNcitZSkNS?= =?utf-8?B?VU5xcVFXbUpJSDBhQkhDZHlEWDFWcEQybFBMcGcydlVNN2tUemwwdjJWL3hU?= =?utf-8?B?ZlJLVFBIaitGMW40RUxTa2tvYXc2ajhlQk5VRHJHMTZJak5IR2Uvd3R5a3pR?= =?utf-8?B?K25DaG1HeE12YjBVd3NNQ1ZxQ3M2N1FDREdOV0gyc21raGZraXFqcU5nRHdO?= =?utf-8?B?cWVwSUZsOUpHOVVVWjN1MVpmNVRrcDVDNVdkem5meWt2QVNIc2gxalBQcUVT?= =?utf-8?B?REVMY29CMWw5MVdoRkswM1AzQnBHd1NuTlY3Nm4zTi9YYzRib3JRZjJCdmw3?= =?utf-8?B?M1BJZWdMY3JqNzNQSkV5ODBFc0hVTFdUMjhWcEFrN0d2ZFZuN3pxZVI1b3JC?= =?utf-8?B?TkZmelFFalJTeGRiSlRjOW5GWVFnbmxVL0pZWFloMUdDYlI2VDBLK3FGblJv?= =?utf-8?B?alQ0V3lPc1dqODlyM1lXZGJpSXkwTDY4MklvbmhwdzJ6SGxqaVRWQ1IrdnRa?= =?utf-8?B?VnhqemxYaVBLNjlHSGlFYUkzblFUeERVaUFkUUlTT0pwMWxmZWEyNmJaeFR1?= =?utf-8?B?T3BhVXhRdzlOdDAwbmZoSWErVkF0a3pLMTJrNitkeUxwOVlibFBvMWY1cngz?= =?utf-8?B?MysxVmlSUjJwZ1BKb2R0MWZzek9lRXNJTGpaYWtNbStqQVAyaGJhZDBFZ2xk?= =?utf-8?B?N0pWa0Q3MTZNNDB6ZjV5eHY2dERhNGpvZE80NlBBNHpBQXYxbGZ4cUU3KzFo?= =?utf-8?B?SmRiZ0ZXVzJ4SjZQTGlSdzI2bXhvN3JhcGhPTmphTTdUSFQzODlzbnN5Tm93?= =?utf-8?B?bno2Y0FRbFNOKy9yRElMZzFJdW1vS0NodGxnRlcxNzB4Z0RhK0twYi96Q2pp?= =?utf-8?B?bDNCcW8yQnlod3F3UmdseHd0YzlDLzArWjZRVWp6Q3cvdENFNmttSkRUaG03?= =?utf-8?B?L2RCdXNpd2Y1ejJjTUl6OSsyRE9NQWRNa3V3R1NjUVBtS1h3Ni9SUHpqK3Vz?= =?utf-8?B?LzV0YVdqeldwUndhWEt0OTFVK3pBR1d1aDcwZWhYTTNaNEF2cCs3ZEpoeHFi?= =?utf-8?B?QkJzSUptTmh3M1ZBaHcwRTZHL2NuL1VIWlJhWGFHNngyMEYycEdEYWlmNzFG?= =?utf-8?B?UHpXRkpJSHdrVFViek9vb0dLWXZUNWFHWWgxKy9lN0hDODVsYmVId2pkeGtD?= =?utf-8?B?Y1pLbnlnYmhjcVk5MkNrNWhvSTJROFA0NGxvQTYyS3cvVVQ0MUR6aEVYbnp3?= =?utf-8?B?Qjk4MWNYbU9YOWF5cytjeC9HUmRkWGNwbmhYUkJqNDBvb2drV3lSQXhBZXla?= =?utf-8?B?WGRWZlh2YnpEWFZkUUN1OWtuaUlrUFlOS3lBVVU2bC9EZU9JRjhSV2J2SDFF?= =?utf-8?B?SVlNc0ZiUnZQdk9sTERVU0NzcmVkbGxxaXExVnRwRkZmZHRzU3RoSHJSaVJ2?= =?utf-8?B?bjBuKzBOMWg4MHFMZVJld0dkeVgzUVNtanNZR2tuN0JRRFR6VXB5d2FqVzRD?= =?utf-8?B?dE9sZkdxeU5VOWlndlpIYmdiVUJpWGl5RVZIYUFxZ3dLSElpdVloZmV1OXR3?= =?utf-8?B?Vk50c1czNjBZMkZSTE5UWmE2M016UVRsYzh3NUVIamI2UXF6ZGt2cjUvbVJj?= =?utf-8?B?RVpuY0RkdEJzUjM5N01ac3kyQU1ZTUVleVl4eW1ySVJ2WW55cGhrU1gvT25K?= =?utf-8?B?bUxMMUZaOFk0bjJjSUFucXBlcktxcmVzOGJmaEt5TjhmeTZZcjFXNkp5bHhl?= =?utf-8?B?b2IzWWJjdUxLbUd6d1UzQTc0OC94WWc2VlJsTHBRZ2R2YzloNFZ0Y0p1c005?= =?utf-8?B?WWhmZEc0WW0yM1g1WUQ1a05NQVlEYlJBcGZtSkpzZmtXQjZXMHU4Zi9EVUFQ?= =?utf-8?Q?tycQoEs+Z9r77QVk=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 42d24729-1ae0-4802-f36f-08da3f089e16 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2022 11:12:27.2177 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: tKMUVbZtqd37nEprMYaRp/PSP9DkpN3tdxhyNYHOoURE6YNbkXoIs7ppefQ6UOHZKE/2IUz/6/o/UW4RRZ1/XA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB6527 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1653563582065100002 Introduce a small helper to OR VMX_INTR_SHADOW_NMI in GUEST_INTERRUPTIBILITY_INFO in order to help dealing with the NMI unblocked by IRET case. Replace the existing usage in handling EXIT_REASON_EXCEPTION_NMI and also add such handling to EPT violations and page-modification log-full events. Reported-by: Andrew Cooper Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Jan Beulich --- Changes since v1: - New in this version. --- xen/arch/x86/hvm/vmx/vmx.c | 28 +++++++++++++++++++------- xen/arch/x86/include/asm/hvm/vmx/vmx.h | 3 +++ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 476ab72463..69980c8e31 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -3935,6 +3935,15 @@ static int vmx_handle_apic_write(void) return vlapic_apicv_write(current, exit_qualification & 0xfff); } =20 +static void undo_nmis_unblocked_by_iret(void) +{ + unsigned long guest_info; + + __vmread(GUEST_INTERRUPTIBILITY_INFO, &guest_info); + __vmwrite(GUEST_INTERRUPTIBILITY_INFO, + guest_info | VMX_INTR_SHADOW_NMI); +} + void vmx_vmexit_handler(struct cpu_user_regs *regs) { unsigned long exit_qualification, exit_reason, idtv_info, intr_info = =3D 0; @@ -4139,13 +4148,7 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs) if ( unlikely(intr_info & INTR_INFO_NMI_UNBLOCKED_BY_IRET) && !(idtv_info & INTR_INFO_VALID_MASK) && (vector !=3D TRAP_double_fault) ) - { - unsigned long guest_info; - - __vmread(GUEST_INTERRUPTIBILITY_INFO, &guest_info); - __vmwrite(GUEST_INTERRUPTIBILITY_INFO, - guest_info | VMX_INTR_SHADOW_NMI); - } + undo_nmis_unblocked_by_iret(); =20 perfc_incra(cause_vector, vector); =20 @@ -4511,6 +4514,11 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs) =20 __vmread(GUEST_PHYSICAL_ADDRESS, &gpa); __vmread(EXIT_QUALIFICATION, &exit_qualification); + + if ( unlikely(exit_qualification & INTR_INFO_NMI_UNBLOCKED_BY_IRET= ) && + !(idtv_info & INTR_INFO_VALID_MASK) ) + undo_nmis_unblocked_by_iret(); + ept_handle_violation(exit_qualification, gpa); break; } @@ -4555,6 +4563,12 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs) break; =20 case EXIT_REASON_PML_FULL: + __vmread(EXIT_QUALIFICATION, &exit_qualification); + + if ( unlikely(exit_qualification & INTR_INFO_NMI_UNBLOCKED_BY_IRET= ) && + !(idtv_info & INTR_INFO_VALID_MASK) ) + undo_nmis_unblocked_by_iret(); + vmx_vcpu_flush_pml_buffer(v); break; =20 diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmx.h b/xen/arch/x86/include/= asm/hvm/vmx/vmx.h index 03995701a1..bc0caad6fb 100644 --- a/xen/arch/x86/include/asm/hvm/vmx/vmx.h +++ b/xen/arch/x86/include/asm/hvm/vmx/vmx.h @@ -225,6 +225,9 @@ static inline void pi_clear_sn(struct pi_desc *pi_desc) =20 /* * Interruption-information format + * + * Note INTR_INFO_NMI_UNBLOCKED_BY_IRET is also used with Exit Qualificati= on + * field under some circumstances. */ #define INTR_INFO_VECTOR_MASK 0xff /* 7:0 */ #define INTR_INFO_INTR_TYPE_MASK 0x700 /* 10:8 */ --=20 2.36.0 From nobody Sat May 18 12:12:31 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1653563583; cv=pass; d=zohomail.com; s=zohoarc; b=kjbB3b3OHu1qT5VS6iIsi4TzAgTjgZlYh6rfcPwOp49LmRSc4EFD1PPElRXNEKtyBM+pNoyeyH54noykJxS+9YY2qFQlCI2Matewz1G+dWpVvVVhQU5EJ40IlQ4WSTtAiZA99h+IfUMDyo8gZGNF+oZVzG+joMdVZXhumegLhJ8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653563583; 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=mZghJ9fryPIa1AdgB3JRhsQ84q95rsW5MylO7wo4jpQ=; b=h26X8zE8dD7VirzAkUohmzPeQOOwo6DlAOpyiZM65z1peTE8TaFMYE6oC/FmjvC09ao0zwmc71yIcoa4ZaTCn21okPa2bbFTaCXoVXTIBai87HuaqOb8/H6U0q93r8e4he3KxS3NGOYr72UoXJPCqEwIn48Ymqn3W+Gcuo0D384= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 165356358310476.37997571326025; Thu, 26 May 2022 04:13:03 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.337558.562209 (Exim 4.92) (envelope-from ) id 1nuBQ3-00049n-ET; Thu, 26 May 2022 11:12:43 +0000 Received: by outflank-mailman (output) from mailman id 337558.562209; Thu, 26 May 2022 11:12:43 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nuBQ3-00049c-AZ; Thu, 26 May 2022 11:12:43 +0000 Received: by outflank-mailman (input) for mailman id 337558; Thu, 26 May 2022 11:12:41 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nuBQ1-0003PI-76 for xen-devel@lists.xenproject.org; Thu, 26 May 2022 11:12:41 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id c05d9a1e-dce4-11ec-bd2c-47488cf2e6aa; Thu, 26 May 2022 13:12:39 +0200 (CEST) Received: from mail-co1nam11lp2173.outbound.protection.outlook.com (HELO NAM11-CO1-obe.outbound.protection.outlook.com) ([104.47.56.173]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 26 May 2022 07:12:33 -0400 Received: from DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) by PH0PR03MB6527.namprd03.prod.outlook.com (2603:10b6:510:ba::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Thu, 26 May 2022 11:12:31 +0000 Received: from DS7PR03MB5608.namprd03.prod.outlook.com ([fe80::5df3:95ce:4dfd:134e]) by DS7PR03MB5608.namprd03.prod.outlook.com ([fe80::5df3:95ce:4dfd:134e%4]) with mapi id 15.20.5293.013; Thu, 26 May 2022 11:12:31 +0000 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: c05d9a1e-dce4-11ec-bd2c-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1653563559; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=h0uFhd5dy2NQgfu+ARn99X6LxjDQPABc4PMm+Xx5S+A=; b=fRs8gOkUYuCIlqslAZmUDQ1v0MNZQNiH1vLH4l+4f/playskxWSrQbUu YbiaddQkrJ0m1kjezsYBJnkXSDku0h3fecx5tjLLRovdXTZoi9trNnC8l 5PzsIuB0VQy5xE5UDiTofzKobHiB+dan6nurIgojcXy3t7PDsbTvaaZvU k=; X-IronPort-RemoteIP: 104.47.56.173 X-IronPort-MID: 72087942 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:YSfgf6Lg7piz4muwFE+RE5QlxSXFcZb7ZxGr2PjKsXjdYENSg2QCy GIaXmmHP/2CamD8L9wjb4qy/BxUuJHTxtNqSwplqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokf0/0vrav67xZVF/fngqoDUUYYoAQgsA149IMsdoUg7wbRh39Q22YHR7z6l4 rseneWOYDdJ5BYsWo4kw/rrRMRH5amaVJsw5zTSVNgT1LPsvyB94KE3fMldG0DQUIhMdtNWc s6YpF2PEsE1yD92Yj+tuu6TnkTn2dc+NyDW4pZdc/DKbhSvOkXee0v0XRYRQR4/ttmHozx+4 MVdtpqMdVgnAo73sfggaTYDNgEhZaITrdcrIVDn2SCS52vvViK1ht5JVQQxN4Be/ftrC2ZT8 /BeMCoKch2Im+OxxvS8V/VogcMgasLsOevzuFk5lW2fUalgHM6FGvqRjTNb9G5YasRmB/HRa tBfcTNyRB/BfwdOKhEcD5dWcOKA2SOnI2IJ9Aj9Sawf8kWLllEh2uTRLf35fuLWV99pgWC0q TeTl4j+KlRAXDCF8hKV/3TpiuLRkCfTXIMJCKb+5vNsmEeUxGEYFFsRT1TTifuzh1O6WtlfA 1cJ4Sdopq83nGSpU938UhuQsHOC+BkGVLJ4CPYm4QuAzq7V5QexBWUeSDNFLts8u6ceWjgCx lKP2dTzClRHsqCTD3SU9b6WrDa7ESkTMWIGIyQDSGMt4NT9oYd1khPGSP5iFrK4ipv+HjSY/ tyRhC03hrFWhslS0ay+pAnDm2j1+cOPSRMp7ALKWG7j9hl+eIOue42v7x7c8OpEK4GaCFKGu RDohvSj0QzHNrnV/ATlfQnHNOjBCyqtWNEEvWNSIg== IronPort-HdrOrdr: A9a23:0FlOsaz028ys3BEqSXcKKrPxpeskLtp133Aq2lEZdPULSKGlfp GV9sjziyWetN9wYh4dcB67Scu9qBTnhORICOgqTMyftWzd1FdAQ7sSibcKrweBJ8S6zJ8l6U 4CSdkANDSPNykcsS+S2mDRfbcdKZu8gdiVbI/lvgtQpGpRGsRdBmlCe2Wm+hocfng6OXN1Lu vV2iIBzADQCkg/X4CePD0oTuLDr9rEmNbPZgMHPQcu7E2rgSmz4LD3PhCE1lNGOgk/i4sKwC zgqUjU96+ju/a0xlv10HLS1Y1fnJ/ExsFYDMKBp8AJInHHixquZq5mR7qe1QpF692H2RIPqp 3hsh0gN8N85zf4eXy0mwLk303a3DMn+xbZuCilqEqmhfa8aCMxCsJHi44cWADe8VAcsNZ117 8O936FtrJMZCmw0hjV1pztbVVHh0C0qX0tnao4lHpES7YTb7dXsMg24F5VKpEdByj3gbpXX9 WGNPuspMq+TGnqLEww5gJUsZ6RtzUIb1u7q3E5y42oO2M8pgE986MarPZv6kvouqhND6Ws3N 60Q5iApIs+MPP+UpgNdNvpOfHHbFAlYSi8Rl56cm6XXZ3uBRr22uzKyYRwwt2WU7o167Z3sK j9cTpjxBsPkgTVeICz4KE= X-IronPort-AV: E=Sophos;i="5.91,252,1647316800"; d="scan'208";a="72087942" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FbmZSxdYTfn8Zvb8yIRbonm+MFX3UpPv9HiqYoz3hNCcIcZ32qcu4qig+LMkYvKXFBQk/VVcaxyH7X8vOHG86TMSq5TmY0xiAWMuGu39Xg6/CXPat05Dn1SjQ+Wc36IwsRaU/DZ7S8Mz/8mkBQgdV2EPgZun7ZnyURWxcbj1uikjJWDC6hJmyTX0fMbOjtzznnttYcb0NOZlcH8rcwusEkYIeVKyYCZV0fxwWJCE5vYlGWAdNtQzMgvt/a11TNQ7R6yJWlGxXyR0K6dD+0itLVEFv8YviU1p4ue6Y0iBZslhoOknXLUHU8E+MPUFi8oaXS05a+naYU/vRmlzOSV4PA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mZghJ9fryPIa1AdgB3JRhsQ84q95rsW5MylO7wo4jpQ=; b=KTMgwgrznYk931H/JkQwm1q3xTaIFhs6auCkD8Naqa276ExqAa4uaPnn77BmHAjE2QiAR26wxS6GHiqFP+BzLcuJkM8mkOcw6ixk5SDenU85NhhERCKSQeBnzwdTL/MXF7xc5dAZnqgu3QLZ1JMShK8FezhH4dxBU16PL2x5+KNNqYMqzjcfwBCQlJPVHRtWIpaKzVDrz5SL1IOF+C9voh+rtAAxLucc9XHZjZhcOjjCBaeZr8JfqrZrmqeT61XxB95scefahvtZeQelL8DqsxtqB89zGm3/sFzewVXnnQXW9i34Sf8q5TTT+lHbFhdymv9F+vbthby3PFJYV1K4yQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mZghJ9fryPIa1AdgB3JRhsQ84q95rsW5MylO7wo4jpQ=; b=oqrTTQ12kHdF7KhnuI7CPbJvrOzIpjQdDnYudDdfTMQhKRo7qiw+02k1qy2c5O+Uv63jS9EIh5gUlrHSSlTphFRbf38aTdHyLzdhgRWDQhuDZ48mG9SX87Y14S8HuBV4msgNtxOIjhwLxicOZnk2QqFFxyUaMiwhbwOOhRBMLLQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Andrew Cooper , George Dunlap , Jan Beulich , Julien Grall , Stefano Stabellini , Wei Liu , Jun Nakajima , Kevin Tian Subject: [PATCH v2 3/3] x86/vmx: implement Notify VM Exit Date: Thu, 26 May 2022 13:11:57 +0200 Message-Id: <20220526111157.24479-4-roger.pau@citrix.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220526111157.24479-1-roger.pau@citrix.com> References: <20220526111157.24479-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0198.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a4::23) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 12ca42e3-2f33-45b7-ada2-08da3f08a074 X-MS-TrafficTypeDiagnostic: PH0PR03MB6527:EE_ X-LD-Processed: 335836de-42ef-43a2-b145-348c2ee9ca5b,ExtAddr X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: G6nS0DZcUCc9cEhlR81kAleL8vNOZNR1tyqp/QXis91rOPTls6vgrqMFxyk0b3l0eVCK6Ls9MxuaQpI/JI+DQSwZrdYkENLmVRcoIbk6FqNzYlImG0SE/dJNClljfqGbSEpLHCDjGJLrknYh9uyq+GaOav5oqaUBHnTGtzqYk2ddr3+gZgsEKXn+uokZDEw09xJxj2E6n8wESTjGgurzvBAPcECTLOfZtM/KulslJBwogeH7z5RWO1mkwYDWlvpwIkhCLMYYgVKGxCe6S7DKvI9DxhJN16IlrXV9qU25OaHEUNb5Ck4VSNIMkoGdeLnB4Oes+dkifZKmDTgaiEXN7AiRXPZ+qiwbHCKYizNDoDmcdEXHQ3pgtVEBGi10md1wKicSD6XkyMWpJZM9hyz928l/zfF0kY5Li6srLysvXbDTq/WNBsquVgul2Pz6Y47LLxSgl4uRV89j6spz4Dqtumkv/v+YKR3cl/j0BhvqfWxOFNFhImGv182K2eiDTl197RAUTsCb6ReOwpGnfSITxvq/guvEZ5l7PaE+0luitE86XyxuL3cFh7ZaZmW1Ok0ZvJP4a8YDRXDcDTz/8RGT1PwLFXd/N6m2ndIV2YH1C31LF7CQvI4s+qm6qgRTUS0+nUYUkGTblc/YexoMRJRxXQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(5660300002)(86362001)(4326008)(66476007)(66556008)(66946007)(8676002)(8936002)(54906003)(316002)(6916009)(38100700002)(1076003)(6506007)(82960400001)(6512007)(26005)(6486002)(83380400001)(6666004)(186003)(508600001)(36756003)(2906002)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eGwyQytkYjQ2UWk3eEJCdFBFYmVMczErQWEvTGo4TkhraUFJWkgrQzRkZjI0?= =?utf-8?B?MmQwSE5wSmpEY21vUVcySytrTXkva29QalVINmlVSm1UWk5BTmNVWHVZa1d4?= =?utf-8?B?WXFoNGYzbnVialJnbHI0b2RGZHpyTXJ6YVBkdHNPQ1JrZ0txZERqVEZoa1Fy?= =?utf-8?B?ZGlsN25LaHUyYmQ3ekxwVkxCZitjei9ycUhJM3JXTWJub2U4OUplbmNtbGVu?= =?utf-8?B?alRpL1dZZmRWWjhUUytqSFd1SE1aWSt3MmpJRTRjS3BDQW13SVJxSk90aXEz?= =?utf-8?B?b0VuelhCUkNXTnBuY3ZGZUFFMEZ2aXhkN2ZRS0IxOG4vU1JUNmwvcnFjSGdu?= =?utf-8?B?ampLSEVENndRSmNvWFVob3VuV2FvTnYyVkswWlV0ZUphbXJVYys5YTRNS2ZL?= =?utf-8?B?NjI2ZWZUdm5XYm1RejdBMDQyd0g1WElLU3hNbS9BdWRnL2h0ZFJ1Y0cwM3Jn?= =?utf-8?B?YS9mWGdlNjNTQTQwS0VoRkwzYUovWnQ3YzBwRExSSHM3MGRNWUZsdHZ5ZEFT?= =?utf-8?B?VkxLRmdOVk5rOFExVEFEc1hPclVoU05FM0ltRFFIVWJOVU1ESWtXOEdhU3Ji?= =?utf-8?B?M1Zuanoxd3l5Ky9xeHRBbWFCU0t4NkRIckh4b2NPMmo4UU5rSHJqcGUvckkz?= =?utf-8?B?UXhZUDdlcTd0ajdVNjU1NzZwWkFoYWdvYkdsNktQdHpQNVhvZ09KWkpmZEpl?= =?utf-8?B?OXQ0d3FSYlFnenVDdHNENDVzVERla1ovWWtydUVqUjFFMytyWkpRcVdQcjRr?= =?utf-8?B?WjhvVUtOaDh2WUgzeUtZejZBMytMVmxLNm5NNGx4L0t2MEdnbDB6NkRGZUtt?= =?utf-8?B?WnRtaHZlQzlHWGRjZURlWVY4NE9Ua3lNL0plcGhYZGE1amE4UFkxQitMY0xr?= =?utf-8?B?NnM1NExXb1IvQWtaVVJnZjh5UTdxY0FobDZwLzVZcGxudDBsenhKRTFzRVRt?= =?utf-8?B?dFAzSEJCZXFvRFdQSVZORy9UbEtlbDhNL3Y2QjR2MC81NkR2c0R4RXN0My9i?= =?utf-8?B?cFRRdmZSWUdUU2x1eE52ejE5WHhyN2xMOTlqeXc5ZjRsRTJrc3RLYkorSGdi?= =?utf-8?B?elJwcjJYZFNTRUxwRFN1UmU0KzBjbXJxTnNzNTdKVjduQS9hSUNDTU50Zm9i?= =?utf-8?B?cy82L3hpeFhYZ1F2NmdkeDIyUnRBZkZkc0NzVmZxVm1LSEJ2elNsZTB1N0VE?= =?utf-8?B?eEZ3L09qWWdySkxER1djZnRDYXhqYi8wMHh1aTZDRFBDNi9kSHZZWEJrYzBv?= =?utf-8?B?M2Y0aGc1K09Vd0FWV2RvK2JPOUhaS3B3Wmg4ZGVCT2lLL0phV2lUWEJnMjFN?= =?utf-8?B?MFUyd0hzcElzWHR3WFlJNVZNSmlQNlg2c0k2VXJOcm16Y0hidnBNUlAwajh4?= =?utf-8?B?WWxtYStTYlU3SHpLODBldHZTbzIwVlNIU3o5dVQvbUtEYVYvLysvVHl5SllX?= =?utf-8?B?RFNCcFJmLzlITVFTVkxIc1JXV2FtZVZWWWVkbjFtdjdlaGtBZ3FkVFlnNVpr?= =?utf-8?B?TllRb0pMbG95UmlvWCtpYVFpcVVnM3llQzBUazd0dHZ1YXRxeFNCWlVoUUN2?= =?utf-8?B?OGx6ZGQvT28wRXhsbksvcmdhdUlUNUxGTUdKT01HRnNoRGRCb0JzcTM1K2Jz?= =?utf-8?B?Ykp0aDNYdk56aldkNnE4NlZ5WWlscFBOWE10K0xNR09VS3N0WWwxZzhUWlF3?= =?utf-8?B?S1RiV1I4dlVZTGdqbjJ0c3lIZ05hbmttWVpBVnhHdS9SRmE0Ky96TnZSYUUw?= =?utf-8?B?QWdjNnUwVzRBRHJMS2hlMmQ4Q3JpaEV0NmxwYzdQazJoMG5PUHo3TjJraWpQ?= =?utf-8?B?bHFLdjlxemMwUUZMcDgrbC9PSWtEUlFmVFJFL3Zid1dzdEVFa2tIWGpFbnpM?= =?utf-8?B?a2Z6VHVqUUd5L0ljNjdnQnBRRG5WREZFSkpNNWhra2RrK1RDTHB1MnFGSmdD?= =?utf-8?B?Rk8rakprVmxpZXFjU0l6YVV1T3A2a25HWElGdEF2dCsxNmpXaHE3cEdKeW1y?= =?utf-8?B?Z0daVEs3T3ZvODFvODNjRVpZWko5Zy84ZkhBK2pOY2RGekhiRGtFdk9aQ3dH?= =?utf-8?B?V3FJMmllNnhDVzdWdG0xMGVXakVZYWZpN041WFB6dVRXMElEMEZyb0lTZlZI?= =?utf-8?B?aXhFMWthcGg3WXAveExzNGM4ekRYbUJyZWdQSm50UXRRaGg4QmI1amt4Wk5P?= =?utf-8?B?d2tGUFlMUmZXWkdnejFrR0Z4OTlwcHlZS3lNbUJ3L3RuczJOYmorMUdHZmNU?= =?utf-8?B?SXhDd3MrRjZSaWFBOTk1elNIWnZubWNRTzhOOHo4TFBJWCtVWWxmL0w2SjJy?= =?utf-8?B?N1pDdlVsc1JSUjJPYjR6ZTNGYTZ0SkpjVktZblNUNXFRUncrbXMzdFBWSHpS?= =?utf-8?Q?uUQpoMddwGGF1P9U=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 12ca42e3-2f33-45b7-ada2-08da3f08a074 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2022 11:12:31.2042 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 8i0ex93hCohlQNPjEICGZBhMqGCjDu+UeuKyDnOJQtgzpGqi8zNnBKk0kuIgIgyFXz4Vw4v55avqGuAhDCQD/A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB6527 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1653563583428100007 Under certain conditions guests can get the CPU stuck in an unbounded loop without the possibility of an interrupt window to occur on instruction boundary. This was the case with the scenarios described in XSA-156. Make use of the Notify VM Exit mechanism, that will trigger a VM Exit if no interrupt window occurs for a specified amount of time. Note that using the Notify VM Exit avoids having to trap #AC and #DB exceptions, as Xen is guaranteed to get a VM Exit even if the guest puts the CPU in a loop without an interrupt window, as such disable the intercepts if the feature is available and enabled. Setting the notify VM exit window to 0 is safe because there's a threshold added by the hardware in order to have a sane window value. Suggested-by: Andrew Cooper Signed-off-by: Roger Pau Monn=C3=A9 --- Changes since v1: - Properly update debug state when using notify VM exit. - Reword commit message. --- This change enables the notify VM exit by default, KVM however doesn't seem to enable it by default, and there's the following note in the commit message: "- There's a possibility, however small, that a notify VM exit happens with VM_CONTEXT_INVALID set in exit qualification. In this case, the vcpu can no longer run. To avoid killing a well-behaved guest, set notify window as -1 to disable this feature by default." It's not obviously clear to me whether the comment was meant to be: "There's a possibility, however small, that a notify VM exit _wrongly_ happens with VM_CONTEXT_INVALID". It's also not clear whether such wrong hardware behavior only affects a specific set of hardware, in a way that we could avoid enabling notify VM exit there. There's a discussion in one of the Linux patches that 128K might be the safer value in order to prevent false positives, but I have no formal confirmation about this. Maybe our Intel maintainers can provide some more feedback on a suitable notify VM exit window value. I've tested with 0 (the proposed default in the patch) and I don't seem to be able to trigger notify VM exits under normal guest operation. Note that even in that case the guest won't be destroyed unless the context is corrupt. --- docs/misc/xen-command-line.pandoc | 11 +++++++++ xen/arch/x86/hvm/vmx/vmcs.c | 19 +++++++++++++++ xen/arch/x86/hvm/vmx/vmx.c | 32 +++++++++++++++++++++++-- xen/arch/x86/include/asm/hvm/vmx/vmcs.h | 4 ++++ xen/arch/x86/include/asm/hvm/vmx/vmx.h | 6 +++++ xen/arch/x86/include/asm/perfc_defn.h | 3 ++- 6 files changed, 72 insertions(+), 3 deletions(-) diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line= .pandoc index 1dc7e1ca07..ccf8bf5806 100644 --- a/docs/misc/xen-command-line.pandoc +++ b/docs/misc/xen-command-line.pandoc @@ -2544,6 +2544,17 @@ guest will notify Xen that it has failed to acquire = a spinlock. , and must be integers. The values will be encoded in guest CPUID 0x40000002 if viridian enlightenments are enabled. =20 +### vm-notify-window (Intel) +> `=3D ` + +> Default: `0` + +Specify the value of the VM Notify window used to detect locked VMs. Set t= o -1 +to disable the feature. Value is in units of crystal clock cycles. + +Note the hardware might add a threshold to the provided value in order to = make +it safe, and hence using 0 is fine. + ### vpid (Intel) > `=3D ` =20 diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c index d388e6729c..6cb2c6c6b7 100644 --- a/xen/arch/x86/hvm/vmx/vmcs.c +++ b/xen/arch/x86/hvm/vmx/vmcs.c @@ -67,6 +67,9 @@ integer_param("ple_gap", ple_gap); static unsigned int __read_mostly ple_window =3D 4096; integer_param("ple_window", ple_window); =20 +static unsigned int __ro_after_init vm_notify_window; +integer_param("vm-notify-window", vm_notify_window); + static bool __read_mostly opt_ept_pml =3D true; static s8 __read_mostly opt_ept_ad =3D -1; int8_t __read_mostly opt_ept_exec_sp =3D -1; @@ -210,6 +213,7 @@ static void __init vmx_display_features(void) P(cpu_has_vmx_pml, "Page Modification Logging"); P(cpu_has_vmx_tsc_scaling, "TSC Scaling"); P(cpu_has_vmx_bus_lock_detection, "Bus Lock Detection"); + P(cpu_has_vmx_notify_vm_exiting, "Notify VM Exit"); #undef P =20 if ( !printed ) @@ -329,6 +333,8 @@ static int vmx_init_vmcs_config(bool bsp) opt |=3D SECONDARY_EXEC_UNRESTRICTED_GUEST; if ( opt_ept_pml ) opt |=3D SECONDARY_EXEC_ENABLE_PML; + if ( vm_notify_window !=3D ~0u ) + opt |=3D SECONDARY_EXEC_NOTIFY_VM_EXITING; =20 /* * "APIC Register Virtualization" and "Virtual Interrupt Delivery" @@ -1333,6 +1339,19 @@ static int construct_vmcs(struct vcpu *v) rc =3D vmx_add_msr(v, MSR_FLUSH_CMD, FLUSH_CMD_L1D, VMX_MSR_GUEST_LOADONLY); =20 + if ( cpu_has_vmx_notify_vm_exiting ) + { + __vmwrite(NOTIFY_WINDOW, vm_notify_window); + /* + * Disable #AC and #DB interception: by using VM Notify Xen is + * guaranteed to get a VM exit even if the guest manages to lock t= he + * CPU. + */ + v->arch.hvm.vmx.exception_bitmap &=3D ~((1U << TRAP_debug) | + (1U << TRAP_alignment_check)= ); + vmx_update_exception_bitmap(v); + } + out: vmx_vmcs_exit(v); =20 diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 69980c8e31..d3c1597b3e 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -1419,10 +1419,19 @@ static void cf_check vmx_update_host_cr3(struct vcp= u *v) =20 void vmx_update_debug_state(struct vcpu *v) { + unsigned int mask =3D 1u << TRAP_int3; + + if ( !cpu_has_monitor_trap_flag && cpu_has_vmx_notify_vm_exiting ) + /* + * Only allow toggling TRAP_debug if notify VM exit is enabled, as + * unconditionally setting TRAP_debug is part of the XSA-156 fix. + */ + mask |=3D 1u << TRAP_debug; + if ( v->arch.hvm.debug_state_latch ) - v->arch.hvm.vmx.exception_bitmap |=3D 1U << TRAP_int3; + v->arch.hvm.vmx.exception_bitmap |=3D mask; else - v->arch.hvm.vmx.exception_bitmap &=3D ~(1U << TRAP_int3); + v->arch.hvm.vmx.exception_bitmap &=3D ~mask; =20 vmx_vmcs_enter(v); vmx_update_exception_bitmap(v); @@ -4155,6 +4164,9 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs) switch ( vector ) { case TRAP_debug: + if ( cpu_has_monitor_trap_flag && cpu_has_vmx_notify_vm_exitin= g ) + goto exit_and_crash; + /* * Updates DR6 where debugger can peek (See 3B 23.2.1, * Table 23-1, "Exit Qualification for Debug Exceptions"). @@ -4593,6 +4605,22 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs) */ break; =20 + case EXIT_REASON_NOTIFY: + __vmread(EXIT_QUALIFICATION, &exit_qualification); + + if ( exit_qualification & NOTIFY_VM_CONTEXT_INVALID ) + { + perfc_incr(vmnotify_crash); + gprintk(XENLOG_ERR, "invalid VM context after notify vmexit\n"= ); + domain_crash(v->domain); + break; + } + + if ( unlikely(exit_qualification & INTR_INFO_NMI_UNBLOCKED_BY_IRET= ) ) + undo_nmis_unblocked_by_iret(); + + break; + case EXIT_REASON_VMX_PREEMPTION_TIMER_EXPIRED: case EXIT_REASON_INVPCID: /* fall through */ diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h b/xen/arch/x86/include= /asm/hvm/vmx/vmcs.h index 5d3edc1642..0961eabf3f 100644 --- a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h +++ b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h @@ -267,6 +267,7 @@ extern u32 vmx_vmentry_control; #define SECONDARY_EXEC_XSAVES 0x00100000 #define SECONDARY_EXEC_TSC_SCALING 0x02000000 #define SECONDARY_EXEC_BUS_LOCK_DETECTION 0x40000000 +#define SECONDARY_EXEC_NOTIFY_VM_EXITING 0x80000000 extern u32 vmx_secondary_exec_control; =20 #define VMX_EPT_EXEC_ONLY_SUPPORTED 0x00000001 @@ -348,6 +349,8 @@ extern u64 vmx_ept_vpid_cap; (vmx_secondary_exec_control & SECONDARY_EXEC_TSC_SCALING) #define cpu_has_vmx_bus_lock_detection \ (vmx_secondary_exec_control & SECONDARY_EXEC_BUS_LOCK_DETECTION) +#define cpu_has_vmx_notify_vm_exiting \ + (vmx_secondary_exec_control & SECONDARY_EXEC_NOTIFY_VM_EXITING) =20 #define VMCS_RID_TYPE_MASK 0x80000000 =20 @@ -455,6 +458,7 @@ enum vmcs_field { SECONDARY_VM_EXEC_CONTROL =3D 0x0000401e, PLE_GAP =3D 0x00004020, PLE_WINDOW =3D 0x00004022, + NOTIFY_WINDOW =3D 0x00004024, VM_INSTRUCTION_ERROR =3D 0x00004400, VM_EXIT_REASON =3D 0x00004402, VM_EXIT_INTR_INFO =3D 0x00004404, diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmx.h b/xen/arch/x86/include/= asm/hvm/vmx/vmx.h index bc0caad6fb..e429de8541 100644 --- a/xen/arch/x86/include/asm/hvm/vmx/vmx.h +++ b/xen/arch/x86/include/asm/hvm/vmx/vmx.h @@ -221,6 +221,7 @@ static inline void pi_clear_sn(struct pi_desc *pi_desc) #define EXIT_REASON_XSAVES 63 #define EXIT_REASON_XRSTORS 64 #define EXIT_REASON_BUS_LOCK 74 +#define EXIT_REASON_NOTIFY 75 /* Remember to also update VMX_PERF_EXIT_REASON_SIZE! */ =20 /* @@ -236,6 +237,11 @@ static inline void pi_clear_sn(struct pi_desc *pi_desc) #define INTR_INFO_VALID_MASK 0x80000000 /* 31 */ #define INTR_INFO_RESVD_BITS_MASK 0x7ffff000 =20 +/* + * Exit Qualifications for NOTIFY VM EXIT + */ +#define NOTIFY_VM_CONTEXT_INVALID 1u + /* * Exit Qualifications for MOV for Control Register Access */ diff --git a/xen/arch/x86/include/asm/perfc_defn.h b/xen/arch/x86/include/a= sm/perfc_defn.h index d6eb661940..c6b601b729 100644 --- a/xen/arch/x86/include/asm/perfc_defn.h +++ b/xen/arch/x86/include/asm/perfc_defn.h @@ -6,7 +6,7 @@ PERFCOUNTER_ARRAY(exceptions, "exceptions", 32) =20 #ifdef CONFIG_HVM =20 -#define VMX_PERF_EXIT_REASON_SIZE 75 +#define VMX_PERF_EXIT_REASON_SIZE 76 #define VMEXIT_NPF_PERFC 143 #define SVM_PERF_EXIT_REASON_SIZE (VMEXIT_NPF_PERFC + 1) PERFCOUNTER_ARRAY(vmexits, "vmexits", @@ -126,5 +126,6 @@ PERFCOUNTER(realmode_exits, "vmexits from realmode= ") PERFCOUNTER(pauseloop_exits, "vmexits from Pause-Loop Detection") =20 PERFCOUNTER(buslock, "Bus Locks Detected") +PERFCOUNTER(vmnotify_crash, "domains crashed by Notify VM Exit") =20 /*#endif*/ /* __XEN_PERFC_DEFN_H__ */ --=20 2.36.0