From nobody Sun May 5 21:13:17 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=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1638530538; cv=pass; d=zohomail.com; s=zohoarc; b=Iq+CM1mCyCZwDEP0vGqskj9t2x4KjD38gYE9sg39nOoZqka7kbux/W7fbWvecshoTXL70fqgtFOSqEbS/1VxzTX1zoEWAs53PZO44b3TTpUKi92r2ljurczaLanBo556rK3cVFkY9pdeYe/YeWrUKsbnkUOlvKF/ld9xjP/enow= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1638530538; 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=arRBtooexp9YOjjgqZoKeIru/O8fhzNxUbCM5wJ1rzw=; b=EYrpeOEdUF8htZOcMwLh6UnsC9zAK9cX1pWteTFC21sKTLmFMQJria8ZPfTALMplF7SKIlvxhMnj+VthjnTmeDtmOW2HxsT3cWo2ZeLL5RXx8jLtVG+BLco1yA1gyIiewjhVPYRv+zL5symMhO24K9+vMTIUp01Z3NdpgdutUwE= 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=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1638530538842224.42410898255014; Fri, 3 Dec 2021 03:22:18 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.237387.411727 (Exim 4.92) (envelope-from ) id 1mt6dg-0006oc-Eq; Fri, 03 Dec 2021 11:22:04 +0000 Received: by outflank-mailman (output) from mailman id 237387.411727; Fri, 03 Dec 2021 11:22:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mt6dg-0006oV-Bl; Fri, 03 Dec 2021 11:22:04 +0000 Received: by outflank-mailman (input) for mailman id 237387; Fri, 03 Dec 2021 11:22:03 +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 1mt6de-0004uM-Rb for xen-devel@lists.xenproject.org; Fri, 03 Dec 2021 11:22:02 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 3cb877d8-542b-11ec-b1df-f38ee3fbfdf7; Fri, 03 Dec 2021 12:22:02 +0100 (CET) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2112.outbound.protection.outlook.com [104.47.17.112]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-15-HKHCOk5sOmiL2Ao6kdds0w-1; Fri, 03 Dec 2021 12:22:01 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB4445.eurprd04.prod.outlook.com (2603:10a6:803:6e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4734.28; Fri, 3 Dec 2021 11:21:58 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe%5]) with mapi id 15.20.4734.028; Fri, 3 Dec 2021 11:21:58 +0000 Received: from [10.156.60.236] (37.24.206.209) by AM5PR0601CA0036.eurprd06.prod.outlook.com (2603:10a6:203:68::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.17 via Frontend Transport; Fri, 3 Dec 2021 11:21:58 +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: 3cb877d8-542b-11ec-b1df-f38ee3fbfdf7 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1638530522; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=arRBtooexp9YOjjgqZoKeIru/O8fhzNxUbCM5wJ1rzw=; b=N7x5oDJr0BbTq2qmFjOT9adogWbl480WUsVcIDNS32aT1KkuTghMeY/WuFYTdqSpDvddNy +PlJCMwE7qYPAyNCDYo0AGkT31Y6ghrioe7uqpV2JNlCdhUyaM7cpCmNch+d/3XUt4Glwa JSq7xdTwnNg9lNvoc+t7+MvFeqJ5lvQ= X-MC-Unique: HKHCOk5sOmiL2Ao6kdds0w-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M3u9qxZX1/15FAaZnOpL6ftR3cjZr4impl4oZp0v1Shh6zLhJ0nusdRwWNv8y//7UAluG6IO1PLJAFJG+ZHTsAHDKneyOU0NmAeJO6dgh84M39yBNccMBb8gTxjwXb4N/TfE8+5vYB1I+wUg2zj3vitScKmDFr37wwqIhtCisjKPu6u19m1Vf1NO1TF7Iu3Q6m9RrrCqYwLendwTkAXWq2SfmyAAooP+kip78+VaAhrONlUlpbxxJfBScnC1VZBXoI8HMNhZPaHUAxrs+0mXIVHS6cYJcfJCGWezgc5onGByiiyzcIrGsuj26zsmkw//TB9DdO51GWyOjxF8MyrM4w== 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=arRBtooexp9YOjjgqZoKeIru/O8fhzNxUbCM5wJ1rzw=; b=PJpRwChpTLtbaGVRVhxiOkVfMMYAiPG/xwWEODn5RtHzyltTLgilDUwz/3cKceFT7bkU9Er5B4kXfzM3cSKpo7ziiHfkLDPTp8LIBCMip1jXepKVboAILkJqLCFEwR/lKUraX6x9hi91wgj8fiMgxT7HssNAGl+mu7uN6/tkpRAnfxbIePhi/Gmw79aEZy7iJ07D7a6w2NlOblBvnS24b7wEd4CM3VnskY0Zi3OUu5oEc3QnXU75i7cYaJ+n0Gcezq9NSGc1Zm4pkR/NDOdd0c28Qi1dz+/Is9f2f4Oedh+QscWZoofHtLOjx9BM4Q9EpeB74jhe95zA1Wili/uYWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <53d783d7-aa53-f2de-6aa3-bd266f176dfb@suse.com> Date: Fri, 3 Dec 2021 12:21:57 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: [PATCH 1/3] x86/HVM: permit CLFLUSH{,OPT} on execute-only code segments Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , Paul Durrant References: <10c7b3c0-c64f-3d12-06d3-8c408f7c9f4c@suse.com> In-Reply-To: <10c7b3c0-c64f-3d12-06d3-8c408f7c9f4c@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM5PR0601CA0036.eurprd06.prod.outlook.com (2603:10a6:203:68::22) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7eaf728d-1c75-42ac-e841-08d9b64f1edd X-MS-TrafficTypeDiagnostic: VI1PR04MB4445: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1751; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vOEJQI8gX8RyoTV+1b1tZto/ooLZGlVBaYkpzZOb+HWwX6DqOzDXuC+Mqaoij6K3PP1Dx+P09i/R2tOiLTnT47xpHnwCX6We7kwbQ1hjZV/3Dh504GJC+oZV/OZAmmyvyfklpZUu4aY7XQolpZt5k5zOd1Yych38dAZQ/+hz1GC8R76n0N57hzoVAsHSPaoUKk0i1nw3Q4dz/j0zLkxjx0Eo2hqTRpw/l3Vn7FHv/S0lZMHzJLKjbSAKtOQWwM2VQkIi1PWEsaH1RZ9KIM5hfnsyFveztIbCsbS/czBwNn1nqMNg1ou49RMXAn0VayYIfDjmb5D0xxMiPlVGmPgwW1ZVQYlVsqkjmjaTD25bOrXZAl4PzyyVIKQQaXYw97XZFcf7mGLfXn0I9if+8VsgScGo1Il3UpS2ijdKwYuCr92Ne6uD/+iyPGnRTvPnOM2ta34Sl7cRVW0XywvnScZ85j1VDIUe2crpTlbguAXZaiQzuRfvB1u1PGk4KmDToYQ/mjrMlZQIXgVzJBN+7xEKhOTZI4Pucjqmwt018um6F9o8UQVEzfRcnit64KjMMrAbwGuMviA3HDVlXmyE2CC47EzGoxTJ4NHlr557Yizciykci2ChYw/Ok42CO3GZXFUmOA5unQTjJ5O4KZNVbuYCS1n0TRK6e+hKV9zFEtxdGYFBX/afoBjoyGs+TABt9cJIt5MLzuMFsDM0tBu6TxuHUAgxYEoTt/8wEHYs/pU597o= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(38100700002)(36756003)(2616005)(31696002)(31686004)(86362001)(316002)(2906002)(66946007)(26005)(8676002)(6916009)(66476007)(66556008)(83380400001)(956004)(5660300002)(6486002)(16576012)(186003)(8936002)(54906003)(4744005)(4326008)(508600001)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Z1R6REVObUVwbUw0RGlKSHVONmE3dWpCbUJaMC8yRk82WllMdFZhbm9OSEQw?= =?utf-8?B?SUFJZGRScVRiTlVQdFo3Sk1QUFBBeFFNOGh2dFlpWW8weU5wQVNxTEgvenRs?= =?utf-8?B?V1YyNVIyY3Bhc2lvSVQ1UEZIRVZOcnBlTlVFbFBweG5iTldGeHJWc1VGYi85?= =?utf-8?B?bXZPaW9qdWlMVXRnOE93Qk9Da3pZL1d0ZDFyTVlkZ25sVVE1NHlUVys5UExs?= =?utf-8?B?S0QyRkpqL0pKeXhmajNDL21iaEtTTU1UcXZyUVUvNktaY2ZTU1ZBVndwRm5U?= =?utf-8?B?WVlXeXNzVHZsUEt5Wm9NN05DYTR2djl1ZjdSL1FXVUcxcTlIMkJOdjFvL1pl?= =?utf-8?B?Q0ZGWXBVaFFwU3NJOGxtdmJKQmJTNmQxeHRGcHZnaUpPL1BoUzRWNEo0THN1?= =?utf-8?B?ei9pMjFuNUdJZXJUemhxVWRGdjREdktPYjlhWjFQRCtuMDcvcHBqanN2dEV5?= =?utf-8?B?cnZaSEJQOHNVUTdmWlRpOFB5Q21HdTZpYzVqajlMdEtlRDFLdFgycE5oTnAv?= =?utf-8?B?UTNsMnQ2cGoxMmhnMlZ0VjFlczZsNjh4aXE4S2VaOE9ubHRnc1RreTlsWkky?= =?utf-8?B?Rld5WnZQdTY4S2ZYZFZJVVQ5TmxpSDNTc3NLVGdaa1FXdnNlYnE3clljeG9W?= =?utf-8?B?RnJuUGZxbjdFZDVrOUMwa05UZnI0WEJPR0FtSkpnclZ4bGVtT3A2RGtuUjgr?= =?utf-8?B?YU92Q2p1WGRvcGI2UDFrd1d1dGJiVzV5UWROUnZrQUpGU1VlbTNaemxuL2lB?= =?utf-8?B?QWIwazZFUnJiOEFXLzdacEpQNUFubUhkRmV1OUNqUGFEVmJ1a3ZDcU94WmRT?= =?utf-8?B?SllYR0Z4bWhHcVdDUm9hRzEwZXNveFV6NkMxS0d1NEhxRjI1dXczeU1DZGpM?= =?utf-8?B?UnVLSndkUXU4OGdoeW11WGJidlIvQVBqbkorRmhudXgvT0dBS245b3J0TmdJ?= =?utf-8?B?S1BQN3B4c1pVV3lWcXFYTXNnQjBNOFMrbU04UzArR21MWFVrT3I0L0xIRWVG?= =?utf-8?B?K2FEU1RzMUpqTGVvM3pCSmhwU1BSTVRrSC95NmZwQWR1ZXlXU3BWdU1VbXdL?= =?utf-8?B?UGlGaDZrS3hPV1p2dThDclcxYUFYN3R3dGFWTFloemxpRHUreFJ0d1JyUU1t?= =?utf-8?B?R0lIeXE4T244K0phT25QdHpoNGM2bHVOOVNmaGQ3bFQ5K21ndEphMkF1TFg2?= =?utf-8?B?bmE0MTFZU0Nud3pmZjhMVlVlOWhEWm5LdkM5d1Y5c3RicHBPNHpyRzlHa29O?= =?utf-8?B?RFlmb0VUcXgyWklVN2ZQYXo3NjdhNVpYNHpEU1NIUllhVDRtWnpnNlUySTZx?= =?utf-8?B?emtQN05mLy9YZUwvNEtpNk4yVWtjK2Q3UzhvRGg0cW5Bc2JmS3hwZW11b0hH?= =?utf-8?B?cnFVVU9BOExJSVRkSEI5bjF1b3FTei9qcUpEVTF5eGc0eDVUd3ZCaWFJNk5l?= =?utf-8?B?Nk82Z0VpWFBjNUgxdmJoMVRucWdHMEZBTVFKMExoT3lRSXJvdEpqc3AyaTd6?= =?utf-8?B?T3NUN3gwM0JZRkh5dFJpamhvcFovaFBYNWIybFR0MmpwOC9kVitsdVJrRnFS?= =?utf-8?B?QkIzS2JCK0oxb1dSN1NHRytoRVVibmJqbXZyVXhlT08yaXRxVkI4dnovZzY5?= =?utf-8?B?UXFPcy9KcW9qUG5neFVJd1poSDNHWDNySUhYRzAxRno1dExPNjN3WlIvMSs3?= =?utf-8?B?cExGMGIrb3hkYTMvVU9wWDhBRGpmb2F2Nmh4dUhMUEdIT1krWlZPQ1lSV3pi?= =?utf-8?B?cS90RGtva3dzOG1HVUxNZ1hVaENnNmprR3BDdUxFUGxlNGNaN1A0a0V3V2Mx?= =?utf-8?B?dHc3NFlIVi95SlRBMmdmQ2JXRGFkTFpkV1ZndlF3Vkc0ci9TVGRLRVpaTGRs?= =?utf-8?B?eUFhNmxacUd3V2RhR3VkLzdKRVJ1eWxFbzdUb0VObDM4bEpzRmFjMmNaRnNw?= =?utf-8?B?ZGlTeVExWU1YS2VaSlEvQjdscVo0MmdJdk5saW1YSmFhZlN3dEkzYTQ3Zk9K?= =?utf-8?B?Sk5ETlU5NkU3Wm8vTW5kbldkSHpBUkJ3MW1MY3lWMnlBblFjSW45V1JJQ0Zl?= =?utf-8?B?bjJIWTRYa2tZTVp1K2liN0cxWU5YQ3VKcS9CeGZYM3FWWTZ0N2dkY1dKQ2NR?= =?utf-8?B?SGRIM3ZiMHFyVzIvWUQxQTJkQ215WHJQcHFWYjIrQzhyZXlHY1FWeTllNjk0?= =?utf-8?Q?7cfFduXUYwLgPt0TZmZ/Q58=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7eaf728d-1c75-42ac-e841-08d9b64f1edd X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Dec 2021 11:21:58.7586 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SoBAdIdZsXYsggmIPA6er2t1pzT18kG0wsqxbNigUhF5IjGLVHHQjkh3/8y4h5nNUty86KdeUd5U3H0botH4Tw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4445 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1638530539193100001 Content-Type: text/plain; charset="utf-8" The SDM explicitly permits this, and since that's sensible behavior don't special case AMD (where the PM doesn't explicitly say so). Fixes: 52dba7bd0b36 ("x86emul: generalize wbinvd() hook") Reported-by: Andrew Cooper Signed-off-by: Jan Beulich Acked-by: Paul Durrant --- a/xen/arch/x86/hvm/emulate.c +++ b/xen/arch/x86/hvm/emulate.c @@ -2310,7 +2310,9 @@ static int hvmemul_cache_op( ASSERT(!is_x86_system_segment(seg)); =20 rc =3D hvmemul_virtual_to_linear(seg, offset, 0, NULL, - hvm_access_read, hvmemul_ctxt, &add= r); + op !=3D x86emul_clwb ? hvm_access_n= one + : hvm_access_rea= d, + hvmemul_ctxt, &addr); if ( rc !=3D X86EMUL_OKAY ) break; =20 From nobody Sun May 5 21:13:17 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=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1638530584; cv=pass; d=zohomail.com; s=zohoarc; b=bl0wNr5QfFPlYrpVbKKKsBGqKvwrQr6dZjj2v7HNUbw+ohobZT/69jv2OVMn3cekPvcchN/hcTMB8DXeeaweMY9AceYaji6LsFxtORomYw/HHnV/eC9yIIfEpmvV23L2q9r+7Rc8q+gZznPpWFaRacTjsqkFOZ4vnVwoFFEd5CQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1638530584; 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=x2S2aIcZK036FRm3DGzFftaBrE1z/LAoM88V/xmz2FM=; b=nJZOHQRrT5BcQvYjHzL3uYEq0stegIGyC8yWzzn9lqgFbzfCKDkTQ4JEvMW90jw/4W/vFnUFdalrKoRce9V7YA2ON5pb3LJuBw9IZfTPZT8lFM/3PjawPgn94fQaPnPwsKoQ780TyJdPOSAp7LgZDUO5krAtJFV+Slyq2FgWOgw= 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=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1638530584640615.422153417725; Fri, 3 Dec 2021 03:23:04 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.237393.411738 (Exim 4.92) (envelope-from ) id 1mt6eI-0007ST-Uh; Fri, 03 Dec 2021 11:22:42 +0000 Received: by outflank-mailman (output) from mailman id 237393.411738; Fri, 03 Dec 2021 11:22:42 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mt6eI-0007SM-QO; Fri, 03 Dec 2021 11:22:42 +0000 Received: by outflank-mailman (input) for mailman id 237393; Fri, 03 Dec 2021 11:22:42 +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 1mt6eI-0004uM-2A for xen-devel@lists.xenproject.org; Fri, 03 Dec 2021 11:22:42 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 54123a22-542b-11ec-b1df-f38ee3fbfdf7; Fri, 03 Dec 2021 12:22:41 +0100 (CET) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2111.outbound.protection.outlook.com [104.47.17.111]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-19-ie8y1T6FPRyK7F5eBeHQEA-1; Fri, 03 Dec 2021 12:22:40 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB4445.eurprd04.prod.outlook.com (2603:10a6:803:6e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4734.28; Fri, 3 Dec 2021 11:22:38 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe%5]) with mapi id 15.20.4734.028; Fri, 3 Dec 2021 11:22:38 +0000 Received: from [10.156.60.236] (37.24.206.209) by AM5PR0601CA0040.eurprd06.prod.outlook.com (2603:10a6:203:68::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.17 via Frontend Transport; Fri, 3 Dec 2021 11:22:38 +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: 54123a22-542b-11ec-b1df-f38ee3fbfdf7 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1638530561; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=x2S2aIcZK036FRm3DGzFftaBrE1z/LAoM88V/xmz2FM=; b=RCKXidmQLxXaJpR8Mlb4/uaa0ofauD81orBlL1XRYkkZLYAlTxTSGMg6NCLw3v4PrvLV/w fmLuPbZuUnXQ2fxilY1ocR0o/NPtaEaOLHwIPZ7BRxYzgjlZMcXKRDzhyn/g80mzq4BHR+ o/n+9PyasjDXWAtjkpFzzV2mIi/7tfU= X-MC-Unique: ie8y1T6FPRyK7F5eBeHQEA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RPAp4KGTOd3ZP8ae8K5FEFuhs4c+qOLiFRnj6UpE0ko2IiXI3fwCOOpWv721KpGw2QN9iaRI5aEYF6nDjLfzEj6ETJq7UqAzF7ymKQmr27aOATz951vVJ0TFGIfWntOrvnry2DNfQjd9LuIrKvsJoVcXlT8ja9YANAdQhN1WD5lOWsQPTHoDjGPfE6tDyx7KN2KTnOWlSa8DrHA3MZZIipd1KQDFcQMF/3xWweIE6H44wWp8Buj0nGkcDFWOuV0bFVOJHNENeLWwrscWeZJtdgmTTdAXsyh/lze6F2AuFVKucvhdZpP45qDYxF1l3PgbKPkQm7q1Q+o5KoXZwKW2uA== 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=x2S2aIcZK036FRm3DGzFftaBrE1z/LAoM88V/xmz2FM=; b=XzRPudmb5wm+F4jIINIOPj4ylUibqYHhJsV2iN2o+q6XBumCHOvFF6BxUx7pgyELeGcAVUUEsLtSENGaDLkUcU9OQ/YhGoJhCJijqrzEwMpGaWsaALBZrjmDwQ/xn5bBFmLhTQQ2DLRF5mxF1vYY6I7ff9wOsBAFU31HMy4OAPnApvM/hYwtTzKj7+8mkRElWCnvfcjbrqEArMHWdF5mXqL+0d4EjAYCmG4Zs/8Rj6SDbzGBinbbTR0pR+sBLaKg+cLdkUKMj9T7k4NdLKQakFrC/vYTtVneMBBXXSJMtmrB7h098gd2iv+Ve33aMJj+w6prvnvZev8hw2Grf+UYog== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <46fdafdd-d6a9-778b-d634-fad8d2f6925a@suse.com> Date: Fri, 3 Dec 2021 12:22:37 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: [PATCH 2/3] x86/HVM: fail virt-to-linear conversion for insn fetches from non-code segments Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , Paul Durrant References: <10c7b3c0-c64f-3d12-06d3-8c408f7c9f4c@suse.com> In-Reply-To: <10c7b3c0-c64f-3d12-06d3-8c408f7c9f4c@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM5PR0601CA0040.eurprd06.prod.outlook.com (2603:10a6:203:68::26) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1eeba3b1-3dd4-4290-dfc6-08d9b64f36ab X-MS-TrafficTypeDiagnostic: VI1PR04MB4445: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3826; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Nc8rk46xWop+QM98H9mxOX+W3dnrS78Hn4IFA6yqE0oRUNSU92PJFgUHoymGbAcZDwJDjFBnEquAiskjI5R/kYa0h/Wv4ZIsN0pLo1+gVTaB0Huc1JAcjGHCKK0yodG/SdLpe+dPjn4iGbvQViYHn0sv5yMEaRFfYQ0hxGXWb/csaCpo4VmZ4SZl4QeZryrvDlxsxYFiAEw7UBz68Vve3OiZVeWnysHdLsfHFQAYo3BaBUpYYP7mEPz7jNO0ORUx9cUfqRWkcpx7IYocHwSUhOBELeRLQf3m/SXIBCQBlS0iBntZ7ad1yuTdUa9YCUm7IFNK9ZjMjxDQKtMdaBvugLul6yCbw6IO+ZibIxvYXGXHDqPoVNQxmg+gMI0dMOT63+iJwLLb+F9rIpYgnxfDIRFolVL+aZ1oN5d7WIP/BSvT4x+4tVpFLZcjYr5VYtXn7e8i5/aNPGRZHrB33JYUaGCXFSTeiLPYK3yyc9PPQqyPJ6dtv1YB4BW0soeRs0UP03QdfBMc+uKxFql9vM6NH7jFDOi5DInvQRBMR7WZ2UQJiMpADv0OAsGquIcbnGHKcgxxWzXk9Y2j1ebIHwLGgHM96YIe0G3tUHVV1LHpoCJOwBMeW9T98qn0RaaWlCio2szqW6fgXPQrINO0eUcw+4R67aPgTCQuhV6dzzQsbnqIG101C4v1Xd1UOyK2M4UCZ4XBtMiYUPiVdezXiwCJGF1j0pX3ObhIaDSV/0Ai3c4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(38100700002)(36756003)(2616005)(31696002)(31686004)(86362001)(316002)(2906002)(66946007)(26005)(8676002)(6916009)(66476007)(66556008)(83380400001)(956004)(5660300002)(6486002)(16576012)(186003)(8936002)(54906003)(4744005)(4326008)(508600001)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QXF2VENsaWpHK21pZTNINlhRbC9KcmFKNks4bHNJTGlFWGNBWUp1YWMrZnRu?= =?utf-8?B?Mjc5R1BXMGNlVHNXNnF0YjNUOTkrVTBWanpxaXUwUXV1cHZ4MS9pQWdNV1lX?= =?utf-8?B?Smx0QzhROGxuVEhXeE5tcmRGeDYrOE14Smx0Y2hEVEtwTDd1bVowbDNqV1kr?= =?utf-8?B?dDJ6Ym1FRlc3bWc2TWhscVlPdzRsYVlySXBWM3RWdG9meXVmQVU4eXkwRW5E?= =?utf-8?B?OGlaWnlxbXdhLzR4bUdaRU1nZGxsK3VTekprOFkzVlRocFRYSVJ4dm01Nk4x?= =?utf-8?B?RjBZN21WRzIwdUZXWklmRFkzcFlvYXRrT3V6dmIvRFM4RVZWOEd1VVlkSXdU?= =?utf-8?B?ekc3OXh6Q3lxY1BiSjV0K1NRQzZxUkI5OGxXOGV3SmhhNlcyOGc4SkVyV0o2?= =?utf-8?B?b2Z3MXpKMW1KdWpMdDlud2pWRktGREdLVFE2K2J1cUdkNElsVktCR3pMSzJ4?= =?utf-8?B?NDdQWVJGdk1xMmFKNFgvTmNHTGJhZVVtQzdWZUJVTnM2TnJRQkpldXVPd0NX?= =?utf-8?B?d29TbU00OEdYZE5WMEtISkJEOFJjTG9IdEUwTWxhRnNVcDRYbHd6bVYzSnJm?= =?utf-8?B?Q3dBTFZBdHQ0QVBLNHFLL0lJZ215V2tLcUkzclp5M202bXpzRmR1RmZSTlp5?= =?utf-8?B?VERBdXhUc1owL3JBM2FKdFd5a3JTdTNQM2dldlBsT3FkTGFvckFtUkV6Zzc3?= =?utf-8?B?SHB0Qmh3SU4rdW1WQ2gzT1pCQ25DVlZlWkV5Rks1QnBWQTFSR2NmektSOHZa?= =?utf-8?B?NTBZcjNRaWZIRlVjc20rVGM1QW0wNHhjTEtNV053VEMzYzIrdUIzYzhiUXQ5?= =?utf-8?B?MlFHZXozS01pTHQwWHZ1NWh5aXFOVkFUcUNHbnZGaUpHSDNTSFo2SkFxd1hl?= =?utf-8?B?RUlaZGJqUitvc0tpNHZBNW5nbFFacUVSWk0rOVcrR0o5S0lDeWxNcEJXNTVl?= =?utf-8?B?bnorQWpzYitzd0FDVFg5M0pybHRmbVRCcUhXVU5TUjcybnN0VXhIVDZFMGVr?= =?utf-8?B?Ry90RjJvNllvVGFvSDFSMHNxWEFNK0p1ZDdoc3lRMS8zRnFWdTB2WWx0a2pH?= =?utf-8?B?M0ZXZXRma1FhR2w0bFZlbnJCU1U1WWZ0VFNiV3RQTVp6NzJOOTdOU2cvci9u?= =?utf-8?B?WERvUjJiMjVDOG11OFAyeit4N0c0d2NWMERyZkJSb3FoSEE3M01oaktzZ21u?= =?utf-8?B?b0grMnNtbm8yVE1ERmhOMFd5bHhWb3hLSytFVVRwc0kzSkd0enhsL2tqSE5q?= =?utf-8?B?OEFNSDNlUHlMUkdEVDdadFFrQzFJVEtOdk9IbjVSY3UvcjlwT0lPYUhKRmVx?= =?utf-8?B?TjM2TEhmSUJzMm1FMTdwb1VuRkY0c2RzZHhLZ2VIaWlEdEsxU3Y1VFhQUU83?= =?utf-8?B?MjNlS3RoSXdCNmFZNXRrN0U1cUVCYU9udVd6U1JNNDBqOWRrSUd5aGhYRjV2?= =?utf-8?B?dElraThiQVMwL2xvSU1NQlFPZDhVKzI4L2Zoek8wN2tPWlVMU2RvdlpaTDYw?= =?utf-8?B?M0dOZG44Qjl4R2NQaXd3RnVRY25NUGMrM2NoZXQrelZGODhhRnI0L1NJTWd3?= =?utf-8?B?eW52R2lIeVVrSU12c0c5V09YU01haTVNdWFGVzNEMzRwVlB1S1B6RlhKZlk5?= =?utf-8?B?SlRvVUlNbmlrVjRPdXBZMHFqd0NtZ0ZZczE1NVQvVi84MkdMWUVObXV1aUln?= =?utf-8?B?ZFFHR0RlVzZUY2VWS2JiWmprcWpQcGxZWlRqbm91ZmowSHFMamlPTk56N3Aw?= =?utf-8?B?ZkR0ajlkeDN5TW15U2lHQnZxYVpQekdNc1p6c2cyb0RPUjdmckJvUmJLSXRR?= =?utf-8?B?R3dtbzZnU2dKUDRCYTJ0VFRzWVVadHg0SE5oeStTY1c4c0xaMkxLWnkyYXhB?= =?utf-8?B?a1NYUU4wcyttMnV5eWlIbFUrUmtMU3oxdWVTTEtiaWxId0pQMXluQVR5WTZD?= =?utf-8?B?YmpKd3N1aVlIUStmcjczeG96TWdXOGliS1I4Ym5vTkFPRjR6ODZ4OVFqd0M0?= =?utf-8?B?dDdmN0VKVnFzMENpbDBRRVplN1l6OWt0eGthcXk3dEk2dFBkUlUrb3lySU1Z?= =?utf-8?B?UWFNWVJPVkRna0FCTXh1bDFueVNsSGR5VVB5aDI1TlZETVlQcmRtYzJaak84?= =?utf-8?B?Wk8yYjJUR3RQN1JOam4vQnV6a1I0cU9SVGJKZTZQdm9lc2QwY1Qyc3FWSjFC?= =?utf-8?Q?Bxekx4pq7D+SqkbnkLQSS7E=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1eeba3b1-3dd4-4290-dfc6-08d9b64f36ab X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Dec 2021 11:22:38.6810 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SnKVYnFu0bwLOCRe7POMucUX42qQhe67DGRgqEP5COKhInqGihRpo/x61f2jqSdtR/MDN9KY77l77wf75OIhpQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4445 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1638530584947100001 Content-Type: text/plain; charset="utf-8" Just like (in protected mode) reads may not go to exec-only segments and writes may not go to non-writable ones, insn fetches may not access data segments. Fixes: 623e83716791 ("hvm: Support hardware task switching") Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -2551,6 +2551,9 @@ bool hvm_vcpu_virtual_to_linear( */ ASSERT(seg < x86_seg_none); =20 + /* However, check that insn fetches only ever specify CS. */ + ASSERT(access_type !=3D hvm_access_insn_fetch || seg =3D=3D x86_seg_cs= ); + if ( !(v->arch.hvm.guest_cr[0] & X86_CR0_PE) ) { /* @@ -2615,10 +2618,17 @@ bool hvm_vcpu_virtual_to_linear( if ( (reg->type & 0xa) =3D=3D 0x8 ) goto out; /* execute-only code segment */ break; + case hvm_access_write: if ( (reg->type & 0xa) !=3D 0x2 ) goto out; /* not a writable data segment */ break; + + case hvm_access_insn_fetch: + if ( !(reg->type & 0x8) ) + goto out; /* not a code segment */ + break; + default: break; } From nobody Sun May 5 21:13:17 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=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1638530849; cv=pass; d=zohomail.com; s=zohoarc; b=VNz2kCFDSrxrrgKxdSSZ3p9fF4tepJjjEG1UzhsWF1a1nN77R0/r4nBNLtJlb8jMMAqzMDQv2i/cRh2ECibYGpu689Xr64sg2vDNUbXF0qtvIx7qmtiujUAC9Wac/qNUwbH/7atoWwfsIcQZStTVXwArzCoWSqm50EQujVGWH5Y= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1638530849; 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=HFvGg2AyKiCL3CXNR/7f8T5X0LRpA3l3GkYroFgY/v8=; b=DBfnTzepVi9fkcbZCkvzjC2KczO178fdNq/tO3nnlyJcnWKE7q6rXcm2i0rJwjLiJYZCpvkO8CtlhxzazWmETMCncTcS7qj7IJgF7Ji0B1hWtLF/xo4ODqIUl8l3uTWgxi2JoTuR96fd96IPQfgHSnEo2f73G3cLyd/u2EfO448= 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=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1638530849759454.23584761534244; Fri, 3 Dec 2021 03:27:29 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.237421.411804 (Exim 4.92) (envelope-from ) id 1mt6ie-0002iu-Us; Fri, 03 Dec 2021 11:27:12 +0000 Received: by outflank-mailman (output) from mailman id 237421.411804; Fri, 03 Dec 2021 11:27:12 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mt6ie-0002in-Rb; Fri, 03 Dec 2021 11:27:12 +0000 Received: by outflank-mailman (input) for mailman id 237421; Fri, 03 Dec 2021 11:27:11 +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 1mt6f3-00064Q-7F for xen-devel@lists.xenproject.org; Fri, 03 Dec 2021 11:23:29 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 6fda1e7c-542b-11ec-976b-d102b41d0961; Fri, 03 Dec 2021 12:23:28 +0100 (CET) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2112.outbound.protection.outlook.com [104.47.17.112]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-25-UPImK2diOhqP9Q_ZdHKf0g-1; Fri, 03 Dec 2021 12:23:26 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VE1PR04MB7375.eurprd04.prod.outlook.com (2603:10a6:800:1a8::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.11; Fri, 3 Dec 2021 11:23:24 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe%5]) with mapi id 15.20.4734.028; Fri, 3 Dec 2021 11:23:25 +0000 Received: from [10.156.60.236] (37.24.206.209) by AS9PR05CA0025.eurprd05.prod.outlook.com (2603:10a6:20b:488::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4734.23 via Frontend Transport; Fri, 3 Dec 2021 11:23:24 +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: 6fda1e7c-542b-11ec-976b-d102b41d0961 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1638530607; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=HFvGg2AyKiCL3CXNR/7f8T5X0LRpA3l3GkYroFgY/v8=; b=NIL2SB0goXbkvd8J+knD6SIM4UOupXp0+TJ01ARU4mkX68sxM11ncjL278rZOnqSStSWWE keOnUGMSd0hQ6/zRf1DN6w6KrTvM4EQ/JriELWJ5RIIdu9yxrmRml3u0oKPkVMCYjfJATN 67Qvt5OcvSrWj49qFATTGbtYwnhzETs= X-MC-Unique: UPImK2diOhqP9Q_ZdHKf0g-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZI8uQOflQKFH/uNIokRfzmeVuCktWAEgbxdfHmV+/+NA1HSN9PiYMQpfOeROCADM0aGIok6tXQthyczOGrjiZ6u9DzubYNZ3R52EerYWsK1BuJfIjLzw6BRMRG1JK9ZYn1HLDDX6vQoaj4zS8q3cwGQAx7eQPNhO1BmHSM6JGl+QzaMNWbRm4H8V3VpsBup75Hdn1Nx9nyNslx8dldDiSsH0QfhO/bXXLTGcFSBGdKv31tNJhv1NxRpHVLCEGeGGlxMiL37CNU9++nYg08EvUCzEEeJKH+lsOfLgrlvIWwGNsWbRORXwNfK9LCwVrJsaG2WpDktPVTSaqB4SBeWUBA== 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=HFvGg2AyKiCL3CXNR/7f8T5X0LRpA3l3GkYroFgY/v8=; b=AZeXxxs70HsmgRDNJ2lh9BhZ0VFwK9JwsNNFraXpPA3dtyvwUEU3o0GE5gAySMLcrSyRU4sW0fNYCnm1flehhKl2cZrbMNc/zxdArbqjP/kDiDK5IeNy85SOlv6SFbXHqfsbkVHlEpM3PDoTImmBYl3m8MFcr5mYTRDPig+EExvQC//7drwICQ/7/0VpSIEJGdBEw0YmnX7spnD+EhHDRdr6U0COBMfHyf4LtRdaIIuPYxtT5J7acl7lZnPct1TdEeD0iqsPt9GuKdI06hss66LyayFKW88EKSCJuTH6Pq+1RaHm7KfWkR7tfVBWkPevIyBiZZnxrOIs7lrEk4OUTg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <53cf0492-e197-d3e6-8898-9e199bbc5399@suse.com> Date: Fri, 3 Dec 2021 12:23:23 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: [PATCH 3/3] x86emul: drop "seg" parameter from insn_fetch() hook Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , Paul Durrant References: <10c7b3c0-c64f-3d12-06d3-8c408f7c9f4c@suse.com> In-Reply-To: <10c7b3c0-c64f-3d12-06d3-8c408f7c9f4c@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS9PR05CA0025.eurprd05.prod.outlook.com (2603:10a6:20b:488::20) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 979c54f3-86d8-413d-5d59-08d9b64f5278 X-MS-TrafficTypeDiagnostic: VE1PR04MB7375: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2150; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YXvBS01+dT4U/cy00IGBI6NziOyeaC10JbhIijIIaXRiNJ2Kj3WifcDf732zylaBc0cGI4IfIP8tu3NjnBv5EB6BfoswdM0M/5sN9PoRzX/m/ZYuC0UKtJTXTAulOJKUPfvLrkibyECO1Yd6x/LydY527+7//TiBgpCePBjqzfXS6DQ0JfcBca/btnXqlrM7yojC17LPLcocgiePxI/SMqKr+AMpvEw6NCvpUCVjPkEGLcgmr8sp32Ggbe1lAmN3NVxTHgRf8AWU81eVdNptkUv8zYqRihx49ibEX8cuIG5OVW+XyoVXnwtp8iUWRlWzE/7aQm99eJdTTXgyejZNM8Vya4rmrMtdb20H70XH/ok7thYXhV5C2Va/HWHEH18D/8jcG802L0+HJk35f3Wx18hjCF3Bfky7yoFLS4CduIG6HMgyQDBOO4Dhpq1CQDGE+ZHw+aRHAL6ieIRQ9GVtDy2Zgl4+dz+6R44KpFJdnMgWzjPJd15HZo7ySjM5cDAPcOSWjd48HFAr11LIpkg+/Loml3GV7+qNKLKE5UKpsc3qFHN4nr0EGzaXlFSMQZyBS5RQdbLTvl/ORudwZvYh5EdLuLgLe44blzwVztZtxU+e7Cgd7vogDgR6AwxQERnDAlN79afsleiooKKedi7JvHWF2l8EPQhR6uYWt+RKLgjNIFjq6Uf8830ls5yHBq5CmuJjLa+4JHDwYN67XeljZ7O5QYVG66PdtkVuycUySoM5WKo0yvOFLYDwg0P5KGaPikDon4evodkfDxXjAnpRWW4ngXnYu0zixWLeyv+l7mU2BXEngDu4JUvEdJM0Vqq+ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(186003)(36756003)(16576012)(26005)(66556008)(2906002)(30864003)(956004)(6916009)(54906003)(66476007)(31696002)(2616005)(316002)(66946007)(4326008)(508600001)(38100700002)(8676002)(83380400001)(5660300002)(86362001)(6486002)(8936002)(31686004)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bnF1MnNxbkpoaUVhbmVvNmVDVHdSMHFYOVJ4QkxTREhJZW4rcnhqaEhuNGJt?= =?utf-8?B?cHNmK29NRmhIdEVmNXVvOXpBbzBXdDJPSkpyTEtUSTlKODMrN09pWUN1ZlIx?= =?utf-8?B?MDNmSFM2em05dzY1Q3dNM0xDVGc3YUkxd2UxbG9LMm45VU41SjllN0JpeUFn?= =?utf-8?B?NE1qYklaNExUZExUdGsxbjRZc0FTcGlPVjk4Nyt2ZWFwZFFxRXUvcWF4WVA2?= =?utf-8?B?aFVOQmlyRCtkd3dqZlhsVE0wTFZzWWtnZk1nenJrcm43Nk1QdlNob0Q2U25J?= =?utf-8?B?RjV2R040RW5GQjU0MGROa0kvemV0UmZNL2gxY05Td3dxdmFvK2NpQUZITlJK?= =?utf-8?B?NUJob0EreHZ6a1BQdVBadkN0SVZBdHYrVlZaWUdFNUZJRFRZMVAxdDZraHhz?= =?utf-8?B?K0F5dnp3QmYwZEwwUWo2ejEzSE1GZEN5bWhSUzczNnRFczRWVEhLcU9GMXhI?= =?utf-8?B?Ly83SE9EUnhjb0FIQ29Pd0tMdjFpRE5jK21UUXFCMmt2YkM1YjRDZjF4Y3Uv?= =?utf-8?B?Rm9ZM09VZlAyT0lRVTNrcmo4bU9namRPcFVWQ1l6Wm1BTEVtWjVKREFFOUtW?= =?utf-8?B?VjNydlU3ZEJ1WVJRTzc0ekZMTGhDTU11SlZMMU1PQ2h2NGJDQ0JaKzB5eklZ?= =?utf-8?B?WDVjclJva3ZKai9PVGFuWGVia3ZLOG15aFRONUJTZVlVRzFCL0thTTljOVZB?= =?utf-8?B?NnVtNXdpVkpYRkFqUDdnTkdiOFZuYTR0WmNsYy9HVE1IWHFaV2VNR2VlYmo0?= =?utf-8?B?LzR6dW1TUWpCSFNhdjFTQ0oxbnBLYjBYN3lwNXRaNW5EUlJWY3J0VmUyNWcz?= =?utf-8?B?eGFpTlk5LzFQT1pXN0ZzeUhXN3hnTVVoOFBaTHBNUnRPbFRHMVFySG1UTkYz?= =?utf-8?B?bi9wdWF3dTVzZkZCRllFRkhCSEcrTlNSVmtpTTBCYXZ5MkdXZlNzM251L1NW?= =?utf-8?B?d01PZGw0TGhlMlRCam83dUVFVWZnYTZrT05UTXF2TTl5djFaT2ZUN1ppYlRH?= =?utf-8?B?MWY5Y3crQ2tyUXEvaW9BTHJpYWduUTN6Y1Q2L09MbVJUWHFvSDNLaUFNQXdW?= =?utf-8?B?NFF0alZYam1nQWVPZEhQbG4rWlJ3aFZLbEVEcE4zaFZaL24rUVZmb2ExWlNF?= =?utf-8?B?dmV4THNTWk92YVIyNjcwOUY3cElKRGVlNEpLSGpKTkYwc01yRDVaeXBaUXQv?= =?utf-8?B?UU1JWXhNTGRscHVocVFLQm13cm5wcUdMcXEvd3grK01jUEU4ZHJiNWZIT3VD?= =?utf-8?B?aElvMmI5S29YVWEzN1hpRzhnNDBPYWFvZFduMC8xamlXc2RsZVdtQVlYeGV1?= =?utf-8?B?LzN3NGNoRGFWY1NVM0Z6dC8vemtBa1Y5ZFVldlh0ZHIveHZ1dTB0VkhhZWt5?= =?utf-8?B?aFB1elVzZE54WkVaOHUwZGN1U0Y2bThtak5VeXJyZ29sT3pQMGQrOHVQZ0g2?= =?utf-8?B?aVQrQ1JoME55SnBsQ2hBbVZ2WXM2SG95cUU0VDBjLzAxMFIzMFdrRk53ZTRZ?= =?utf-8?B?MXpoRUFNMmsycGJjZStOVC9SYmpkZVFIRXJEZno3WXdZRnZXb0VaZ3pReHlX?= =?utf-8?B?azJCV3liaGlKZHh3WS8vWStxWm83ZVdmdS9PYjl2bFB2Z3I2WU5uelFJWXZy?= =?utf-8?B?cTF5Mm5qT25TekUrbEVVcThJcmh1ZzN4cjVwcmg3NWhGdzN1aDhlVEt6NklX?= =?utf-8?B?aEJlTnVnU0VQSXRaS0RPeFdQWStBNFJVYUY2QjRUNmlGOVQxYitIVjBRa0FB?= =?utf-8?B?TEVabVZOcktGYVBEeW5OSHkyVkpLcjdjaGVGOGNid2pnMm1kaXFkd0Nid0dO?= =?utf-8?B?RGN0Ti9ORURQN3dvK20xTEl2TGZtUnN5V3Jsb1A1MWtReEpyVnJmWU1mbnVU?= =?utf-8?B?TmtWV1F4VUZ1RkxSbStqeUpXWTFmVWk3RmdIZ2c5U3NOcmkzMXpOOHZ5dGwz?= =?utf-8?B?akpPWW1NcEhWRUQ5OXdjeTAwSlJ5TytCRi9kNk1zSXMzVXJoNCtCeFdxcWxC?= =?utf-8?B?UXJPZDlDU2Y3NE9sT1hwRk45Q0ticW13L0tzTXFuMUVUUnhUT0tjZU1nd0ZE?= =?utf-8?B?VUxJT3g3VEtPM3BaSjJYZ1dra3VreWtMdjZFWTdyVWlGYXJKZU5LbitudlRV?= =?utf-8?B?VjBwNTgyL0xWeGFpYzZaZEM4N0xNNnFVVFFYN2Z2bDFRdno2cjRRMGFzaEJl?= =?utf-8?Q?TPgXsnCqADNIHiGTg/BHrjw=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 979c54f3-86d8-413d-5d59-08d9b64f5278 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Dec 2021 11:23:25.3286 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: kFrKd2f9rVxbEXrdUPzgeKaODOG8yHCXBRvlbMuP44mTp5qwCoZZOHQmh6qfqlC5zDJ5Q68mQFXfSOmPvB7cDQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB7375 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1638530850998100001 Content-Type: text/plain; charset="utf-8" This is specified (and asserted for in a number of places) to always be CS. Passing this as an argument in various places is therefore pointless. The price to pay is two simple new functions, with the benefit of the PTWR case now gaining a more appropriate error code. Signed-off-by: Jan Beulich Acked-by: Paul Durrant Reviewed-by: Andrew Cooper --- In principle in the PTWR case I think we ought to set PFEC_insn_fetch in the error code only when NX is seen as available by the guest. Otoh I'd kind of expect x86_emul_pagefault() to abstract away this detail. Thoughts? Note: While probably trivial to re-base ahead, for now this depends on "x86emul: a few small steps towards disintegration" (https://lists.xen.org/archives/html/xen-devel/2021-08/msg00367.html). --- a/tools/fuzz/x86_instruction_emulator/fuzz-emul.c +++ b/tools/fuzz/x86_instruction_emulator/fuzz-emul.c @@ -197,14 +197,11 @@ static int fuzz_read_io( } =20 static int fuzz_insn_fetch( - enum x86_segment seg, unsigned long offset, void *p_data, unsigned int bytes, struct x86_emulate_ctxt *ctxt) { - assert(seg =3D=3D x86_seg_cs); - /* Minimal segment limit checking, until full one is being put in plac= e. */ if ( ctxt->addr_size < 64 && (offset >> 32) ) { @@ -222,7 +219,7 @@ static int fuzz_insn_fetch( return maybe_fail(ctxt, "insn_fetch", true); } =20 - return data_read(ctxt, seg, "insn_fetch", p_data, bytes); + return data_read(ctxt, x86_seg_cs, "insn_fetch", p_data, bytes); } =20 static int _fuzz_rep_read(struct x86_emulate_ctxt *ctxt, --- a/tools/tests/x86_emulator/predicates.c +++ b/tools/tests/x86_emulator/predicates.c @@ -2049,8 +2049,7 @@ static void print_insn(const uint8_t *in =20 void do_test(uint8_t *instr, unsigned int len, unsigned int modrm, enum mem_access mem, struct x86_emulate_ctxt *ctxt, - int (*fetch)(enum x86_segment seg, - unsigned long offset, + int (*fetch)(unsigned long offset, void *p_data, unsigned int bytes, struct x86_emulate_ctxt *ctxt)) @@ -2110,8 +2109,7 @@ void do_test(uint8_t *instr, unsigned in } =20 void predicates_test(void *instr, struct x86_emulate_ctxt *ctxt, - int (*fetch)(enum x86_segment seg, - unsigned long offset, + int (*fetch)(unsigned long offset, void *p_data, unsigned int bytes, struct x86_emulate_ctxt *ctxt)) --- a/tools/tests/x86_emulator/test_x86_emulator.c +++ b/tools/tests/x86_emulator/test_x86_emulator.c @@ -594,14 +594,13 @@ static int read( } =20 static int fetch( - enum x86_segment seg, unsigned long offset, void *p_data, unsigned int bytes, struct x86_emulate_ctxt *ctxt) { if ( verbose ) - printf("** %s(%u, %p,, %u,)\n", __func__, seg, (void *)offset, byt= es); + printf("** %s(CS:%p,, %u,)\n", __func__, (void *)offset, bytes); =20 memcpy(p_data, (void *)offset, bytes); return X86EMUL_OKAY; --- a/tools/tests/x86_emulator/x86-emulate.h +++ b/tools/tests/x86_emulator/x86-emulate.h @@ -113,8 +113,7 @@ WRAP(puts); void evex_disp8_test(void *instr, struct x86_emulate_ctxt *ctxt, const struct x86_emulate_ops *ops); void predicates_test(void *instr, struct x86_emulate_ctxt *ctxt, - int (*fetch)(enum x86_segment seg, - unsigned long offset, + int (*fetch)(unsigned long offset, void *p_data, unsigned int bytes, struct x86_emulate_ctxt *ctxt)); --- a/xen/arch/x86/hvm/emulate.c +++ b/xen/arch/x86/hvm/emulate.c @@ -1294,7 +1294,6 @@ static int hvmemul_read( } =20 int hvmemul_insn_fetch( - enum x86_segment seg, unsigned long offset, void *p_data, unsigned int bytes, @@ -1312,7 +1311,7 @@ int hvmemul_insn_fetch( if ( !bytes || unlikely((insn_off + bytes) > hvmemul_ctxt->insn_buf_bytes) ) { - int rc =3D __hvmemul_read(seg, offset, p_data, bytes, + int rc =3D __hvmemul_read(x86_seg_cs, offset, p_data, bytes, hvm_access_insn_fetch, hvmemul_ctxt); =20 if ( rc =3D=3D X86EMUL_OKAY && bytes ) --- a/xen/arch/x86/mm/shadow/hvm.c +++ b/xen/arch/x86/mm/shadow/hvm.c @@ -162,8 +162,7 @@ hvm_emulate_read(enum x86_segment seg, } =20 static int -hvm_emulate_insn_fetch(enum x86_segment seg, - unsigned long offset, +hvm_emulate_insn_fetch(unsigned long offset, void *p_data, unsigned int bytes, struct x86_emulate_ctxt *ctxt) @@ -172,11 +171,9 @@ hvm_emulate_insn_fetch(enum x86_segment container_of(ctxt, struct sh_emulate_ctxt, ctxt); unsigned int insn_off =3D offset - sh_ctxt->insn_buf_eip; =20 - ASSERT(seg =3D=3D x86_seg_cs); - /* Fall back if requested bytes are not in the prefetch cache. */ if ( unlikely((insn_off + bytes) > sh_ctxt->insn_buf_bytes) ) - return hvm_read(seg, offset, p_data, bytes, + return hvm_read(x86_seg_cs, offset, p_data, bytes, hvm_access_insn_fetch, sh_ctxt); =20 /* Hit the cache. Simple memcpy. */ --- a/xen/arch/x86/pv/emul-gate-op.c +++ b/xen/arch/x86/pv/emul-gate-op.c @@ -163,6 +163,12 @@ static int read_mem(enum x86_segment seg return X86EMUL_OKAY; } =20 +static int fetch(unsigned long offset, void *p_data, + unsigned int bytes, struct x86_emulate_ctxt *ctxt) +{ + return read_mem(x86_seg_cs, offset, p_data, bytes, ctxt); +} + void pv_emulate_gate_op(struct cpu_user_regs *regs) { struct vcpu *v =3D current; @@ -205,7 +211,7 @@ void pv_emulate_gate_op(struct cpu_user_ =20 ctxt.ctxt.addr_size =3D ar & _SEGMENT_DB ? 32 : 16; /* Leave zero in ctxt.ctxt.sp_size, as it's not needed for decoding. */ - state =3D x86_decode_insn(&ctxt.ctxt, read_mem); + state =3D x86_decode_insn(&ctxt.ctxt, fetch); ctxt.insn_fetch =3D false; if ( IS_ERR_OR_NULL(state) ) { --- a/xen/arch/x86/pv/emul-priv-op.c +++ b/xen/arch/x86/pv/emul-priv-op.c @@ -1258,8 +1258,7 @@ static int validate(const struct x86_emu return X86EMUL_UNHANDLEABLE; } =20 -static int insn_fetch(enum x86_segment seg, - unsigned long offset, +static int insn_fetch(unsigned long offset, void *p_data, unsigned int bytes, struct x86_emulate_ctxt *ctxt) @@ -1269,8 +1268,6 @@ static int insn_fetch(enum x86_segment s unsigned int rc; unsigned long addr =3D poc->cs.base + offset; =20 - ASSERT(seg =3D=3D x86_seg_cs); - /* We don't mean to emulate any branches. */ if ( !bytes ) return X86EMUL_UNHANDLEABLE; --- a/xen/arch/x86/pv/ro-page-fault.c +++ b/xen/arch/x86/pv/ro-page-fault.c @@ -52,6 +52,21 @@ static int ptwr_emulated_read(enum x86_s return X86EMUL_OKAY; } =20 +static int ptwr_emulated_insn_fetch(unsigned long offset, + void *p_data, unsigned int bytes, + struct x86_emulate_ctxt *ctxt) +{ + unsigned int rc =3D copy_from_guest_pv(p_data, (void *)offset, bytes); + + if ( rc ) + { + x86_emul_pagefault(PFEC_insn_fetch, offset + bytes - rc, ctxt); + return X86EMUL_EXCEPTION; + } + + return X86EMUL_OKAY; +} + /* * p_old being NULL indicates a plain write to occur, while a non-NULL * input requests a CMPXCHG-based update. @@ -247,7 +262,7 @@ static int ptwr_emulated_cmpxchg(enum x8 =20 static const struct x86_emulate_ops ptwr_emulate_ops =3D { .read =3D ptwr_emulated_read, - .insn_fetch =3D ptwr_emulated_read, + .insn_fetch =3D ptwr_emulated_insn_fetch, .write =3D ptwr_emulated_write, .cmpxchg =3D ptwr_emulated_cmpxchg, .validate =3D pv_emul_is_mem_write, @@ -290,14 +305,14 @@ static int ptwr_do_page_fault(struct x86 =20 static const struct x86_emulate_ops mmio_ro_emulate_ops =3D { .read =3D x86emul_unhandleable_rw, - .insn_fetch =3D ptwr_emulated_read, + .insn_fetch =3D ptwr_emulated_insn_fetch, .write =3D mmio_ro_emulated_write, .validate =3D pv_emul_is_mem_write, }; =20 static const struct x86_emulate_ops mmcfg_intercept_ops =3D { .read =3D x86emul_unhandleable_rw, - .insn_fetch =3D ptwr_emulated_read, + .insn_fetch =3D ptwr_emulated_insn_fetch, .write =3D mmcfg_intercept_write, .validate =3D pv_emul_is_mem_write, }; --- a/xen/arch/x86/x86_emulate/decode.c +++ b/xen/arch/x86/x86_emulate/decode.c @@ -34,8 +34,7 @@ struct x86_emulate_state * x86_decode_insn( struct x86_emulate_ctxt *ctxt, int (*insn_fetch)( - enum x86_segment seg, unsigned long offset, - void *p_data, unsigned int bytes, + unsigned long offset, void *p_data, unsigned int bytes, struct x86_emulate_ctxt *ctxt)) { static DEFINE_PER_CPU(struct x86_emulate_state, state); @@ -618,7 +617,7 @@ static unsigned int decode_disp8scale(en generate_exception_if((uint8_t)(s->ip - \ ctxt->regs->r(ip)) > MAX_INST_LEN, \ X86_EXC_GP, 0); \ - rc =3D ops->insn_fetch(x86_seg_cs, _ip, &_x, _size, ctxt); \ + rc =3D ops->insn_fetch(_ip, &_x, _size, ctxt); \ if ( rc ) goto done; \ _x; \ }) --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -357,7 +357,7 @@ do { ip =3D (uint16_t)ip; \ else if ( !mode_64bit() ) \ ip =3D (uint32_t)ip; \ - rc =3D ops->insn_fetch(x86_seg_cs, ip, NULL, 0, ctxt); \ + rc =3D ops->insn_fetch(ip, NULL, 0, ctxt); \ if ( rc ) goto done; \ _regs.r(ip) =3D ip; \ singlestep =3D _regs.eflags & X86_EFLAGS_TF; \ @@ -2301,7 +2301,7 @@ x86_emulate( ? 8 : op_bytes; if ( (rc =3D read_ulong(x86_seg_ss, sp_post_inc(op_bytes + src.val= ), &dst.val, op_bytes, ctxt, ops)) !=3D 0 || - (rc =3D ops->insn_fetch(x86_seg_cs, dst.val, NULL, 0, ctxt)) ) + (rc =3D ops->insn_fetch(dst.val, NULL, 0, ctxt)) ) goto done; _regs.r(ip) =3D dst.val; adjust_bnd(ctxt, ops, vex.pfx); @@ -2822,14 +2822,14 @@ x86_emulate( break; case 2: /* call (near) */ dst.val =3D _regs.r(ip); - if ( (rc =3D ops->insn_fetch(x86_seg_cs, src.val, NULL, 0, ctx= t)) ) + if ( (rc =3D ops->insn_fetch(src.val, NULL, 0, ctxt)) ) goto done; _regs.r(ip) =3D src.val; src.val =3D dst.val; adjust_bnd(ctxt, ops, vex.pfx); goto push; case 4: /* jmp (near) */ - if ( (rc =3D ops->insn_fetch(x86_seg_cs, src.val, NULL, 0, ctx= t)) ) + if ( (rc =3D ops->insn_fetch(src.val, NULL, 0, ctxt)) ) goto done; _regs.r(ip) =3D src.val; dst.type =3D OP_NONE; --- a/xen/arch/x86/x86_emulate/x86_emulate.h +++ b/xen/arch/x86/x86_emulate/x86_emulate.h @@ -254,13 +254,12 @@ struct x86_emulate_ops =20 /* * insn_fetch: Emulate fetch from instruction byte stream. - * Except for @bytes, all parameters are the same as for 'read'. + * Except for @bytes and missing @seg, all parameters are the same as= for + * 'read'. * @bytes: Access length (0 <=3D @bytes < 16, with zero meaning * "validate address only"). - * @seg is always x86_seg_cs. */ int (*insn_fetch)( - enum x86_segment seg, unsigned long offset, void *p_data, unsigned int bytes, @@ -750,8 +749,7 @@ struct x86_emulate_state * x86_decode_insn( struct x86_emulate_ctxt *ctxt, int (*insn_fetch)( - enum x86_segment seg, unsigned long offset, - void *p_data, unsigned int bytes, + unsigned long offset, void *p_data, unsigned int bytes, struct x86_emulate_ctxt *ctxt)); =20 unsigned int --- a/xen/include/asm-x86/hvm/emulate.h +++ b/xen/include/asm-x86/hvm/emulate.h @@ -92,8 +92,7 @@ static inline bool handle_mmio(void) return hvm_emulate_one_insn(x86_insn_is_mem_access, "MMIO"); } =20 -int hvmemul_insn_fetch(enum x86_segment seg, - unsigned long offset, +int hvmemul_insn_fetch(unsigned long offset, void *p_data, unsigned int bytes, struct x86_emulate_ctxt *ctxt);