From patchwork Mon Jul 19 17:46:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krish Sadhukhan X-Patchwork-Id: 12386789 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1292CC6377B for ; Mon, 19 Jul 2021 21:20:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B80EA6113E for ; Mon, 19 Jul 2021 21:20:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1359129AbhGSUeC (ORCPT ); Mon, 19 Jul 2021 16:34:02 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:54144 "EHLO mx0b-00069f02.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1383542AbhGSR4V (ORCPT ); Mon, 19 Jul 2021 13:56:21 -0400 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 16JIUUQ6006909; Mon, 19 Jul 2021 18:36:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=ejz4N9VaA+2B3m9yDYZuFUikLoLLOfqfcBX/4xFP9fw=; b=hhFgIgFQS68nPNI1F8A6qEP/5waIT13/kgzokfCUgi7gnTvo+CtEs4MruHKBKY0hZ2MX M9A79jeZ/y8WzKkGkwle5Xuna6oUq8gd+2i8sAbGpkGTd/36MVHyDGMeW9S18Z17OKEA rydEAlXmhOQorE7kUAu0HuDe2Ypjj817b+CPfxodfi/1sLK1GRXVpbeFCEtngcH6tW54 wLAG51YOTEmE+G/we0IQ8tBMmH/eEzMuqZZhYjvav3NTz+iRgMRKm31arVdXT9Bl3fD/ 3r+43vRuP/VNY4pL5IudnXgShaKyppoH8P7scDinNMY6GT2xOBi2X2xcuIpEBZoDqQT/ gA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2020-01-29; bh=ejz4N9VaA+2B3m9yDYZuFUikLoLLOfqfcBX/4xFP9fw=; b=n61QqpgX4TwoVw8v/9h+hu5EEqjduzPB7E1OIzaXYWBssdI27J1MGZALcIo9kH51DREB pP25Kvb7M/p0PlOgslHsfnRBMI/rSRbFEDs6mh+46FSt9eKV+E3fVkC9nlQzasoYTas1 YmR+KHiTz9eNJbdrSLC10dB29hjh7FsvhGOtvAGV5FNR/lKRJ1WYpCNPE+qzTc/3T25E 4DZWZZtQ+tIb30nXJ6hAi4E0HX5t+48uaO11VTONZCBXNt65ZBVIm1MNd0d36jXUhY5h SDMLb+O/pBeAveA7rhXYBnP28Bz3hS+7b0AzagX3+qQReROnhNDUHZukY6NGHr/qhJEr nA== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by mx0b-00069f02.pphosted.com with ESMTP id 39w8p0rvnq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Jul 2021 18:36:17 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 16JIV3T5136392; Mon, 19 Jul 2021 18:36:16 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam08lp2041.outbound.protection.outlook.com [104.47.73.41]) by aserp3020.oracle.com with ESMTP id 39uq156kk9-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Jul 2021 18:36:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hHcu/HccmKAJkt2+qBQgKBVWeXFydMxDI5VVqq0I4HZX34jGXORWf35cVAkUdNVd903cf4+l65qXfc1SZwP8j7mynmeBXPq13Bp1VV+eUkER4qLuEM0+397Iy4b/DgWasSV8GtwfeYvBnkBIYyLkIhy+Ly82skEVQ0Bw10qtg5jcrFryvqdlPqLYMgqIqUhmq3JwOnBxMY1FT89nDCZ3kjPvYjUzdZmNYs4Yama3vClqh0xm++qZa250536eFbe+9EqxZxZVaJmFk8r84qjBrGaIiVasRAA3fPxd3kmWel/Vh0mw0IGRBBj51WDzvuTtYk8Yu9dYjCKFXsEGegYZmQ== 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-SenderADCheck; bh=ejz4N9VaA+2B3m9yDYZuFUikLoLLOfqfcBX/4xFP9fw=; b=f2/4LBO8c2mhfl/WxPtq9vGXQhWAYpeV7Ph/L2mnvtcWPPof7fVG93sWxNPsyAgmq9ug/KCFnk4kDIOq5Ug9An25sM7xB+Rnl1B2UHqHXiv47pQ+4zF+QRtPL2AV6t1f+xC69D6igxn2Lv5dySYt6XpIRoRb+V0z5JuLJZ0cePqBifLsUWjXn+MX0GpBMyyHA8aFRmNzWbO8P63Tkt1iGSHZflD2jU+D+GXh6w8q+l8gCC/DCwUWOeWrUH6pfPLK9CKkUlBixIa6mUQSvx8/PgN7TKo4X/ZncC+nzlL5krlssMGZlVyevpSGPIKoKAIis8xGKYzor4QxZeJEnGXD5g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ejz4N9VaA+2B3m9yDYZuFUikLoLLOfqfcBX/4xFP9fw=; b=I82lPdQCpZQYjZWO8MTy69nHPlGrKV5XeJGDMe18pnIpUxaEHyezcbCQ62sz4eUsYlO42T6Ageh1uZaKLnGbFYlTWXCXlMJujeJO8/dykmOJKRl4GrsLhEVoVbOe3nH2GEc69D8zfdbbFOUt3z5QAlu7byssAW/vCuhFKjHYMqM= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=oracle.com; Received: from SN6PR10MB3021.namprd10.prod.outlook.com (2603:10b6:805:cc::19) by SA2PR10MB4538.namprd10.prod.outlook.com (2603:10b6:806:115::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.23; Mon, 19 Jul 2021 18:36:15 +0000 Received: from SN6PR10MB3021.namprd10.prod.outlook.com ([fe80::f17c:44eb:d1be:2107]) by SN6PR10MB3021.namprd10.prod.outlook.com ([fe80::f17c:44eb:d1be:2107%7]) with mapi id 15.20.4331.032; Mon, 19 Jul 2021 18:36:15 +0000 From: Krish Sadhukhan To: kvm@vger.kernel.org Cc: pbonzini@redhat.com, jmattson@google.com, seanjc@google.com, vkuznets@redhat.com, wanpengli@tencent.com, joro@8bytes.org Subject: [PATCH 1/2 v2] nSVM: Add a variant of svm_vmrun() for setting guest RIP to custom code Date: Mon, 19 Jul 2021 13:46:16 -0400 Message-Id: <20210719174617.241568-2-krish.sadhukhan@oracle.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: <20210719174617.241568-1-krish.sadhukhan@oracle.com> References: <20210719174617.241568-1-krish.sadhukhan@oracle.com> X-ClientProxiedBy: SN2PR01CA0066.prod.exchangelabs.com (2603:10b6:800::34) To SN6PR10MB3021.namprd10.prod.outlook.com (2603:10b6:805:cc::19) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from ban25x6uut29.us.oracle.com (138.3.201.29) by SN2PR01CA0066.prod.exchangelabs.com (2603:10b6:800::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.22 via Frontend Transport; Mon, 19 Jul 2021 18:36:14 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2f503184-208f-42a1-021a-08d94ae416f0 X-MS-TrafficTypeDiagnostic: SA2PR10MB4538: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4UZUcIwbp9SM2BePyS82CgHTkdg3JLkvPr1q5SUtUNOCyNsgbdVklnEBOZlcDtLxLH7khF7ajSl2VSC2zFRngIt6YUNpxXuXhPgWEfT+tz9ejhMQVOtnOBo/tssqeyuKfh5bHZ5gYAfj27Cdoqx34+CVRDwzn//IHmGrVrmERlx+GjXQp2bJHy3OA41wRlZq+WeuscsRne1dsVKqPiMIK7ZV2eCebvymRa+8l0cY9mpXnXUk1BxeH6SjZG4R53DBTWWHScLaFz2M72lkmXjxDcLQP9OAPGSDnlktErdd5CTTtaf9dwQnutK9cCzvvtLkTjnKNFy8mB1AwA/f+tXmqM12zcNItrK6tBU5wqklCaITxwxsaC7taKRs7pTJ8He+vx+RagLIGsfQsoYsxr+E0glaT7YxWmZ0IntORFZk5yDVOrcDhHIsEmuR8RTjgIsWlW5fMUou7Addf70W/ZN4x5ZnKVA6I67SONh+coOrYHy8ebQuCWV+Uh8PgGSkDkJkf1vzi10Ty8cbhxfZ2tRiawZzGcTod8UOgKqsrNlgZ7qNjRYiYvtHj/pNv/YY9JS7aJywIdg8K07Ow93ElNn/9mfVz93ttlNL6XKRSuRnnK1sDJvUVVk95IojX6UctuCjuioz3fXFXCAGv10RngLHo1jD3hlQfhkpzJ0pNP7Ej/oMPJ9De3KD9+UYEG4DOlHMcV8pmQVhETx9WAxoLcvxPQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR10MB3021.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(136003)(376002)(366004)(346002)(396003)(39860400002)(478600001)(52116002)(38100700002)(316002)(38350700002)(8676002)(7696005)(26005)(86362001)(5660300002)(1076003)(83380400001)(186003)(4326008)(6486002)(36756003)(66476007)(66946007)(66556008)(956004)(2906002)(8936002)(44832011)(6916009)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: m6sKVFMkcmZ5kLTWqAqYjh6rUP5OdGkUlk1m0yb78DFlipzPfe4rtb4JIetR3npOexi/cy/1HmZFhgZIKBXNwrONiz++MGq39G/4is7KuNAIBo4V82pVgYR6Bus4r0yCamwkGBU46aG0r/BkD2gHeEnl0xp6c+Y6lj62ZbkA25TJXqXEAeSGSNu85MR7BWatw7tUi3bmnffPpfPqnBkQhQpmHSlNxe+nA7TW0gwtlgWPFPDlGtJWXOESUwKK1uLRUas2eJ0CGYrAclLsljxVDyu8a9hEVSJ43bxOwRy3AedmoRC8Ak6hZvDbEmUiIb6bzbqRlUs5S6DJThq70bAeRuSp64I5SrsaCi1TKnvgmsePPm8PyL+2p/b7o8pwHiDi5q8TiaYvYS5QhdU0V9s74BfxXA/dhEa+lxtmRNmz9kzARtHsANtvIE9cOuNbc0hLdtb1rzCdAuD8ZDkwx46nkNCjoo/KM54CUFvcKSFbS6L3UyHNUn/JnTomXbVuN4JqhQLn7U+5NcyD8cXpOxZuOzgDW4Sah4JXiWcugPeVdzoBfCwM+RbNCrEo6frdSohkSzV5deif2Z4lUO4Ga+oNYHzHVu6hhUe5QeW4exJex3nA4BpZ8UaqtVYhpDUeyfcp0KlGzNpyCY7L96PlJBQoTHGvkhXaSKkeiHkw2DXIrhfrAp8EN3iRTWwJSOQnhRat04Vuawn0pf7urPCuaDaGKRAC5+Uz8hBXUSyYcpXDKYVcYnybeFyS13bLsB+u2KQQ4AF0E6pBQriPsQfglgqGAIEoS211/ZY5wxWIR+IHhG3mdu3WOQi6dRko/Apn/T5tkx2XrzXu5M1J4Sov36j1VPm3Dto088cYUHtG5TsLU+ZCnzvO1+cKrTcezupRtzTzDelerem9fkbGrKkfzh9eASBiFHVcu5lkfWDfLK60iB+pAGZmSCRncTlV4f49d49BDu8ZpMt068ulz1TL22LA2AzrGiKbBHqPMQHjDGs2j9eaLKCAi/Uv4fdBpwfBZLbPCWoHWerqvxkBA19KED55GBOfX1YJyfpr4PXri8AhICldttFJpHRM4SuV0+O164OmSqOeZ32xNKIccSlo2jfN7qv06lcZ215T4qrBSXKYeyFfSW/Co7MP4eGhGszJnwdoZSpXyO9hFvkdMApobp4Lv/YcuC+ea78jNs9bef+gB7jrkpxaSLyi9NgC9Vuvp5UUHuCRoR67iZqSlGZtff+28wl/5E1WcdSdCbBTnXjNi+JxMYLSt8UPDdz1z83BKrVJUQxm/F7q/IjpRbb9/eL7E/auAzqzpVmf3aE9EgfyvW57NGQq6+zuTjFBc5TTRwah X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f503184-208f-42a1-021a-08d94ae416f0 X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3021.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jul 2021 18:36:15.0950 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: GpJmyjqDqmqDI8g0BSrQrVcZq7iWZ+aB50cWF6lhg4YYxBw2FKqkHzAtODT4F0Hw4VNSkxY03l9uDnS/GF3I3B2KhdZkeplCsTsj79AMnkU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR10MB4538 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10050 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 bulkscore=0 spamscore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2107190105 X-Proofpoint-GUID: 72RkmIpZ-mXM16h07r-ym_-wIYxO6JY- X-Proofpoint-ORIG-GUID: 72RkmIpZ-mXM16h07r-ym_-wIYxO6JY- Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Current implementations of svm_vmrun() and test_run() set the guest RIP to a wrapper function which executes the guest code being used by tests. This is not suitable for tests like testing the effect of guest EFLAGS.TF on VMRUN because the trap handler will point to the second guest instruction to which the test code does not have access. Therefore, move the contents of svm_vmrun() to a new function called __svm_vmrun() and add guest RIP as a function parameter so that it will set the VMCB guest RIP field to the memory location passed in. Call this new function in svm_vmrun() and pass the wrapper guest code in order to maintain the existing interface. Signed-off-by: Krish Sadhukhan --- x86/svm.c | 9 +++++++-- x86/svm.h | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/x86/svm.c b/x86/svm.c index f185ca0..4b46281 100644 --- a/x86/svm.c +++ b/x86/svm.c @@ -227,9 +227,9 @@ struct svm_test *v2_test; u64 guest_stack[10000]; -int svm_vmrun(void) +int __svm_vmrun(u64 rip) { - vmcb->save.rip = (ulong)test_thunk; + vmcb->save.rip = (ulong)rip; vmcb->save.rsp = (ulong)(guest_stack + ARRAY_SIZE(guest_stack)); regs.rdi = (ulong)v2_test; @@ -244,6 +244,11 @@ int svm_vmrun(void) return (vmcb->control.exit_code); } +int svm_vmrun(void) +{ + return __svm_vmrun((u64)test_thunk); +} + extern u64 *vmrun_rip; static void test_run(struct svm_test *test) diff --git a/x86/svm.h b/x86/svm.h index 995b0f8..92fa277 100644 --- a/x86/svm.h +++ b/x86/svm.h @@ -408,6 +408,7 @@ void inc_test_stage(struct svm_test *test); void vmcb_ident(struct vmcb *vmcb); struct regs get_regs(void); void vmmcall(void); +int __svm_vmrun(u64 rip); int svm_vmrun(void); void test_set_guest(test_guest_func func); From patchwork Mon Jul 19 17:46:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krish Sadhukhan X-Patchwork-Id: 12386785 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 93783C07E9B for ; Mon, 19 Jul 2021 21:20:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6B9906115B for ; Mon, 19 Jul 2021 21:20:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1358090AbhGSUca (ORCPT ); Mon, 19 Jul 2021 16:32:30 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:63990 "EHLO mx0b-00069f02.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1383543AbhGSR4V (ORCPT ); Mon, 19 Jul 2021 13:56:21 -0400 Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 16JIV9RP018167; Mon, 19 Jul 2021 18:36:17 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=/GylK+0s0bDW45FrwyxAsNTVADBtJtBo2HyqLs7EcIk=; b=xdyVjAoDWe9mlO+ahk+CZFqR69nTG8axt/CzcwFcz+Vpx3wc2vkci8lvMUqQLk4+3XI9 TkbkzQIRUpRhwRBCEygwAkfNrV5zKJdDu9RHS8o3UfSBMXHlaTfndcu/LUqr23QhzXQ9 VjwXSgie+koelYH080QBqSrZZd6hlQtqNjzCZYygn1BEcGVGs+5OKoem0/KU1Weol+iD GJuMiCjZQr/suMqwsA/KV9yiHHmmdTvfu5qTeIMH8FbMCxCsBVAbvlnhO47uNDZBBV0Q ctxGAsji0n0xyD6cHtK+h6mqj3Jlr5TfK8GWoc//hlmYsXHLlDZCdeAMHuEJ4KPBts27 9w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2020-01-29; bh=/GylK+0s0bDW45FrwyxAsNTVADBtJtBo2HyqLs7EcIk=; b=x00riqNoIYY1d7X1EosX/H/zE/R5CiM5iatOctIlDIV7BQRni6zRPuU7TA82sJGbkE0W hLGpED/FS12yWH2dCmBVfDqkTNGG5vMhk8lXGk7iWT0eoUkq3dK806JCYgO1h/gHx4u2 +ZoSYQYW7lhIH7yy9Ph9rzZv4E7vsCFtwo+htJKDeKtbesCKINDTmdgK3ByUg/0UJHpD xq3oa9tWWjUOyB+WyEkk04bCQMQBgqKYzR/dD8Hd9tVcWsIwYoCFYasQXePikifdpvOy 9XveP03rZVimMEIrvFfzY5PsOGHyMCHE1zfyflT98Av67JjXFYulhp0clGj1O7tL9heN AQ== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by mx0b-00069f02.pphosted.com with ESMTP id 39w83crxh9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Jul 2021 18:36:17 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 16JIV3T6136392; Mon, 19 Jul 2021 18:36:16 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam08lp2041.outbound.protection.outlook.com [104.47.73.41]) by aserp3020.oracle.com with ESMTP id 39uq156kk9-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Jul 2021 18:36:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mVFvWr2C4eioSVb1QaOh8gFFaKu6p8Fg5fBTmQ+AJedTuNk1eCMB95XXgiKd2dznU594asTLVqHlSGF2o/afBD0lATdxoxpIlZQxbyOTofd51c07YS1eIVa4dxxCMvSMaA/7HazSHPK2uM4LCdKzgBeDkxHpLQ0X0cda5RnOzjC94+82x1RM2GF6oxY7z5Hv76ezAiJ8YS6pRrxE07k51HbnuF29P5lGNxs/O7WHpNOlnug8kK1ydmJtwIOJDvdzd9dk+G6xLc3U+VqNQbadwrnFAMcZliPaY8qEpZKgWIGnlyU7R8J8ibOFmrxEZJ07TTHGdPqh+S7vdW3ARu6qdQ== 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-SenderADCheck; bh=/GylK+0s0bDW45FrwyxAsNTVADBtJtBo2HyqLs7EcIk=; b=A18YKWOhhbV5SE3nM1YuTlfPjAcUAS69vkAjrkHpzxpMQhN0Bl1KdE+LGdUsyNta0exdixraE2pM0ETbqdTbDUz+d9AazweNKOiceLfph4AYl0P9lAGtZ/Ttq9RN+dKZs3BlEuiQi8z+KuTAjnFn5bPg+2osiZZ38zsBlqwSRXJdRfrQ8vkOCDQKOXPkF/piva16upv2cJplov6fDIYX1LtWNjq5WUOAeo5cv+ZF4o097CsB+1/bIe3zVpLyiNujFwbiKkb7pklTnBe9WrAtyplmhrQGqseF0jbsa+GVKICH98Yu5capTWCA3g76Oep8WZGecfaLaykGs9rmMM/bWg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/GylK+0s0bDW45FrwyxAsNTVADBtJtBo2HyqLs7EcIk=; b=gaRtd2idyTCCwsoTK+C2Eu7Hea2MIh9K1JnMa3iaFgUOyBSn68kTUd35JygJ/LQ7m/ZhW6bcmtdqoPOPJv2J4KJCYuTJ/W2eEOwIuytF9s6quK/soN6xmFgVD6mzriAjSNdAgRc/nXs2bjX1V9wseBbn7Y2FAh7DGIBv3Db/r18= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=oracle.com; Received: from SN6PR10MB3021.namprd10.prod.outlook.com (2603:10b6:805:cc::19) by SA2PR10MB4538.namprd10.prod.outlook.com (2603:10b6:806:115::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.23; Mon, 19 Jul 2021 18:36:16 +0000 Received: from SN6PR10MB3021.namprd10.prod.outlook.com ([fe80::f17c:44eb:d1be:2107]) by SN6PR10MB3021.namprd10.prod.outlook.com ([fe80::f17c:44eb:d1be:2107%7]) with mapi id 15.20.4331.032; Mon, 19 Jul 2021 18:36:16 +0000 From: Krish Sadhukhan To: kvm@vger.kernel.org Cc: pbonzini@redhat.com, jmattson@google.com, seanjc@google.com, vkuznets@redhat.com, wanpengli@tencent.com, joro@8bytes.org Subject: [PATCH 2/2 v2] Test: nSVM: Test the effect of guest EFLAGS.TF on VMRUN Date: Mon, 19 Jul 2021 13:46:17 -0400 Message-Id: <20210719174617.241568-3-krish.sadhukhan@oracle.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: <20210719174617.241568-1-krish.sadhukhan@oracle.com> References: <20210719174617.241568-1-krish.sadhukhan@oracle.com> X-ClientProxiedBy: SN2PR01CA0066.prod.exchangelabs.com (2603:10b6:800::34) To SN6PR10MB3021.namprd10.prod.outlook.com (2603:10b6:805:cc::19) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from ban25x6uut29.us.oracle.com (138.3.201.29) by SN2PR01CA0066.prod.exchangelabs.com (2603:10b6:800::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.22 via Frontend Transport; Mon, 19 Jul 2021 18:36:15 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c5e2cb39-2215-4b25-a4a6-08d94ae4178a X-MS-TrafficTypeDiagnostic: SA2PR10MB4538: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 258datAoVfpRLl85sn6TfJi6Hm0Kym5y+tAmfP5WU33SAEl/LvHAPomMY+mNtp5H9floKUtq+girxVj6LMfmaZ22qtlrB1mizRBI9e9ztfVMFDQGO+7KMZTCaitmoC2s7UXBexYnevK0K/Ckt8g7/Ik7W/8w898u9RuRTKT5rlPLuUiADKR/gHlpBauIxp16QK7mEMBt53YEvM2+RgLK5LSlI4lOCliFVm+Y+ye+l4skhbGmNWFCRhKrNX6+xLr6j6USRM3kxs23YaWOW5cSxEINJW+XKPG+31V6/2mUYXUxGtmK0mzorFpItZtE2UOPPHGjp0HxnCQKsQI+YV+sBnnEsBqwFXsBTafLXkIh0twJPCeedrpbcl9y+oiDwQ09gpf6mgZ8BKUToPZb2PVWvQO47fucHtE1MKcNo3Xd5wORKiCsFmT/P0gByzTuSrjB49fkvU54q7KGKJhxMM2zejtT/iMxuO7W15bRXtmAG7U42onTGLlas9Dt3AOrhUudlLKyn4nLgRj4PNwYWqlaXBjhGC3Zy9nPxsIXTG3AHDRC5pfWhEC1LCSkCDa0YXTurrcEEL78cL3YBQzmSFF35PaAh4k0JgLYCynFSe9k3jAn7o1M5b3TTzeasv4+a/zz936R6xvEtqPSwtKmbPoUzQaQtmI2fvx7B/4fN4XxM1Urt5IAy3i+M3N+c4e38IR0CQWXG0iPGhMlqf7gYrO4+A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR10MB3021.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(136003)(376002)(366004)(346002)(396003)(39860400002)(478600001)(52116002)(38100700002)(316002)(38350700002)(8676002)(7696005)(26005)(86362001)(5660300002)(1076003)(186003)(4326008)(6486002)(36756003)(66476007)(66946007)(66556008)(956004)(2906002)(8936002)(44832011)(6916009)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: nBo1obi2Uff0dHgHZoLZLJNdK8jGvDJN+45kQ6AaG8svc7Nf71lSHMZquFfQ3C+MqyPUHGn37tYPrCFRwIzXGUF9LeiNCy9Ru55teor6i9zO/SNQUxicM0wU4nbDJA+4Fs7aCUH0N6uORlfR7Gik/79Ml+nKnr7nHtPBbnAol8rixvLChfpjFRsbk5HeVJMpUW6XaPlLAYX0fMtDcTvMLPpQzucw34oxYNCjSeOp/wgPYYoQlXyoD8YE4jFv1HMWajfRZxJvM8nD2qHpUUHYVxqxgMeVxbPQtUN/iOQ/iQWTRimJx3rj2G9HGUvAfHThFDvjkj14Ybu7iLJXImHlBEnFccq9oAf2WjN8TUhDE7wKuJCjbZeuMd/maIs9eLSDG2m0YrrbyH2YATWF3SmL9cKeQePAaKI18LHL81uV2zRjzDe9v3dCffK8D6EwbUlx+5G0EdMSHBtr+1hIRl/65/gXT5F/LfjVYdhK9uzYY43zq7poPoMnI5c1a5TfpYUGaWMINfP4Fy7hhvt8V/5H+AteaAfSD+gAc0e8x4zdu87DWXgqO/qmJIeCka19HijKSZVJE2Bwuc7Ck9bd5A9Dcv8CDwRdb+Ws5nidnDlyXur21k5hFiT5iRN7WmZiXqUf9YusaMFwp8GpWfotKouroDIZNlF9ZWmwiPs1lJiTtCFFwoZ6lnEwjhTgQ8hbiZh725G+t8MDOOJlqAq77BUB7xnVuFpVipz3UMW2noYCi5DDPeW+ms/qrYj5TGa7DwKFIr2kaub3HrrgPPilsOmEjtgTpo24MGzc/w+neF5cIlATL0TSlEGXs9TVNhathJYrdOA4oH+iDcRFBagcssCJvtJZ503WaOMSdV/mWT/mVJq1Uv1bDiADhsCVI4Q0R3mRG6mPWJAR50+GUwqS+RIcyMEOkn+fpIr0SydvEFEx52LLEUUfTxXWCNFIJhpeKICZ0NBTk/sOU97oGYpj7qX/SzBW3EKQfjYhkuQya22pQtVBZCunoL3jEsVV2c3G2g/cgTPv1AMTxZQhIBBeapGciIi26eFFk5V70JAiFBg+KaxhHRG7YoGhxUhwVrcUk+wP+vLdKCnQ+yeUffedXVVDL0nkdaEYHSfQYxLeNI5L7sdrrLsfqrKi1Z8Okp1RwxKv7ZxOcaI/6EWre9FTBo9HQ9CDD+7NfotZRJgvKf3mTeIeVM85raj7laiXaWr/AnP2ZG7HAoGzxOx8A7UFVvOu8FscJM4NBBUQWYXC2BlvYZUQ63v8QsBC0l+0Xsm9NAbocXVwfDEvMaf6V31bYAQKByZl9BRrT7OwsQHBQljVT5Q8daa2pghIWUUzmyKPTEqA X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5e2cb39-2215-4b25-a4a6-08d94ae4178a X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3021.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jul 2021 18:36:15.9965 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BGO9N4be+a5kGYcXF8e+Skqe8mB9XAy2ashH0PPBsKrmppSXQwCXBxjMwPbhZnW+sl55EbIiJZEG/AytX44Ot8EdHe9T6UD/AChzZQgZEII= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR10MB4538 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10050 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 malwarescore=0 mlxlogscore=940 suspectscore=0 bulkscore=0 spamscore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2107190105 X-Proofpoint-GUID: DtZxtpbbV7_99PldG3MHZwDFMwEGD4vn X-Proofpoint-ORIG-GUID: DtZxtpbbV7_99PldG3MHZwDFMwEGD4vn Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org According to section "VMRUN and TF/RF Bits in EFLAGS." in APM vol 2, "When VMRUN loads a guest value of 1 in EFLAGS.TF, that value does not cause a trace trap between the VMRUN and the first guest instruction, but rather after completion of the first guest instruction." Signed-off-by: Krish Sadhukhan --- x86/svm_tests.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/x86/svm_tests.c b/x86/svm_tests.c index a56a197..7827d1e 100644 --- a/x86/svm_tests.c +++ b/x86/svm_tests.c @@ -2491,6 +2491,66 @@ static void test_vmrun_canonicalization(void) TEST_CANONICAL(vmcb->save.tr.base, "TR"); } +/* + * When VMRUN loads a guest value of 1 in EFLAGS.TF, that value does not + * cause a trace trap between the VMRUN and the first guest instruction, but + * rather after completion of the first guest instruction. + * + * [APM vol 2] + */ +u64 guest_rflags_test_trap_rip; + +static void guest_rflags_test_db_handler(struct ex_regs *r) +{ + guest_rflags_test_trap_rip = r->rip; + r->rflags &= ~X86_EFLAGS_TF; +} + +extern void guest_rflags_test_guest(struct svm_test *test); +extern u64 *insn2; +extern u64 *guest_end; + +asm("guest_rflags_test_guest:\n\t" + "push %rbp\n\t" + ".global insn2\n\t" + "insn2:\n\t" + "mov %rsp,%rbp\n\t" + "vmmcall\n\t" + "vmmcall\n\t" + ".global guest_end\n\t" + "guest_end:\n\t" + "vmmcall\n\t" + "pop %rbp\n\t" + "ret"); + +static void test_guest_rflags(void) +{ + handle_exception(DB_VECTOR, guest_rflags_test_db_handler); + + /* + * Trap expected after completion of first guest instruction + */ + vmcb->save.rflags |= X86_EFLAGS_TF; + report (__svm_vmrun((u64)guest_rflags_test_guest) == SVM_EXIT_VMMCALL && + guest_rflags_test_trap_rip == (u64)&insn2, + "Test EFLAGS.TF on VMRUN: trap expected after completion of first guest instruction"); + /* + * No trap expected + */ + guest_rflags_test_trap_rip = 0; + vmcb->save.rip += 3; + vmcb->save.rflags |= X86_EFLAGS_TF; + report (__svm_vmrun(vmcb->save.rip) == SVM_EXIT_VMMCALL && + guest_rflags_test_trap_rip == 0, "Test EFLAGS.TF on VMRUN: trap not expected"); + + /* + * Let guest finish execution + */ + vmcb->save.rip += 3; + report (__svm_vmrun(vmcb->save.rip) == SVM_EXIT_VMMCALL && + vmcb->save.rip == (u64)&guest_end, "Test EFLAGS.TF on VMRUN: guest execution completion"); +} + static void svm_guest_state_test(void) { test_set_guest(basic_guest_main); @@ -2501,6 +2561,7 @@ static void svm_guest_state_test(void) test_dr(); test_msrpm_iopm_bitmap_addrs(); test_vmrun_canonicalization(); + test_guest_rflags(); } static void __svm_npt_rsvd_bits_test(u64 *pxe, u64 rsvd_bits, u64 efer,