From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751057AbdE3WJi (ORCPT ); Tue, 30 May 2017 18:09:38 -0400 Received: from mail-by2nam01on0089.outbound.protection.outlook.com ([104.47.34.89]:37312 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750811AbdE3WJf (ORCPT ); Tue, 30 May 2017 18:09:35 -0400 Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; CC: , , , , , , , , , Subject: Re: [PATCH v2] KVM: x86: Avoid guest page table walk when gpa_available is set To: Joerg Roedel References: <1495206749-25393-1-git-send-email-brijesh.singh@amd.com> <20170530090548.GA2764@8bytes.org> From: Brijesh Singh Message-ID: <51f8c2c0-44f9-8173-408d-076c7db3c015@amd.com> Date: Tue, 30 May 2017 17:09:30 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: <20170530090548.GA2764@8bytes.org> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN1PR19CA0036.namprd19.prod.outlook.com (10.163.220.46) To SN1PR12MB0158.namprd12.prod.outlook.com (10.162.3.145) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PR12MB0158: X-MS-Office365-Filtering-Correlation-Id: d08ce8e3-1516-4450-261c-08d4a7a88d49 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423075)(201703031133081);SRVR:SN1PR12MB0158; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;3:/2S3CeVsQszhTRYP7lxyY2DsILpm/nu/CzgHnXXhVEKiMtbCO+ckpUQsBfBH/SoxFfuNU+6cTRA5wtGvL2uCqbxCYQuOa8nqy+KgPfH66zk1ws8GfDSFQ/bvEDxunQMjve+dx1LMilZ3kdvPOLQtAQIkvLSfhlPz2yN+wvbsVRT0QjHjwV2ZIL0kR79Hzphy7seeRBAvUz2WOvym/tNllMYOumaioaNJYRKiI08FLQANWkka6JbzmayakFU+anC6uqQln1JGcDnUjDEhPRdb0X/mZ0TgmKxRcggS93ATMWFHFGY4ED03Fufru4GeusgtquUpwkPHHSFDSh5VSdaj/xqMRISIdgs7DFfcRy3Mm6g=;25:67lRIRncG8yeF+xJH1+bFcGSt5exCyd2t8vZJ3NqbA4QAX/Yu5VglYk4etcpi7PEx5j6na4SrqgvNGn6ACrXytOOiteL5l+y5H8bt/gu4Va5XZytCydDsGT6z3z4IMbICRgdyS4EWTeSe1CbNzoZa3QEK0W/MXm9ZJ1CTkKHj2NFuY8kn4IlZngGcS1o0GSTDSUmp7mhHM7w3ORDQgnC9PBB0CRD4vY84IMlAZjB2+UEHjiJRQR7WtRyrUUPSfeA4nXZjVeV9e5mmKH9uBLR1dLVKLjRXOjI1n1GYNguOsX6d2n5N0uYpbPNy27bMeHvsa+r2D72gi+R3HrGp6bXkgQr6l8FaMsk6ELaipPlhdVIm2ZYrah945dyWYRloDXXZWuova9TI1NWDSx2CMGfXYSQw1aRleHpCCrt0S+Istg2/AfVad07PSuYYKiw2F10V6y6FaBOASoUcdS4+FDWiuIY5K2hvMF5RG6BE7iBOCk= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;31:rQdEqwjLg4UvhY7cEZ/jrui1GGzm16w+H5VmgUZjPb9rWMUxoGKFqBTp6faEOvT8IODI1sjNWNjT4x41jj/6jrw17F0/9h/eDxh+biX/McFS6Ns+q7dIq12ctFvjUyFcYGz58t4wAhw9io0n57zNritzJdpkWqtv1Sasb0daNB7XqIeSahs8zM9JTonzUe8jP9XsSzXz+kA1M36SBPv6suPGDQhxCX5989e3aW/vmdI=;20:SJu5eidqfTxZPAJqSqKWODYwluUAbBWgJcMiNDyvKeXDRB2N9LK/T8/suUDqLD2VZx+Hgb/2PLW/xPBTuKsalLs0RobOIRc09+ruYKcKI00bQ36d8s4nY6gcooK0anWKyJMp4HHWuNAXeT1cN7Nc4MmxFJNt1u/FzWzM0R+946lH9vP6LOlgciPGXKqqAuawE99CEYNA9gxQK0J21AJ6VITtihztxY6nXEbEq1PPixhhTswEoI0EGPQ+LtIFE4lDmp17ANbhn6HWlHtmSJEH3QS1jmRKixJyz59QM8Tat1D5jo+ccrxs8Un/xvPZp+39FbvW5dfbaNevAxW6STFuCywTPlqm2J/Kg71kzNVOk8binC2mgLQlYQ1R53Nppnx4KDOqjdKMizIWYgTrtKnrS57imICCIjRimVYqkjhRX7yca5+h1FYqMvcj+E+S4yWk203sID1/icL7OW4RN76V8cunf1LTus1l9PDr1JQn3KsbhvuSqPhgCQRKTT5lRqyo X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(84791874153150); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(6055026)(6041248)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(6072148);SRVR:SN1PR12MB0158;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0158; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;4:Kpmj/m8WB2CjwEzHRFdMFtSljE4Jy/EDYJEDr6c8camHIWySzJJXgyt2QxqOTmh7zHR5jal/Xo0j9N96kSEDyiDH7ZkKyP/WHbAofLLrH2eRhCQ6qpR3QsHdSVRhwDmIkx+ywq9omyedfLfdTHE73MidpYtmNX5EZHuQiTA33SzbpSMbOMcH31U/HwkMyNbk2Z2W9aQk/tFj92rEkoAWh42X36X26W9MQdfYLZ1Ku+gZ8gqPYwaRbXBHsFv7fhc4b8gqupSB1Zect37qaYtlWZfRVjQud2mS1xgxyF+amstSAiguIY7HQbEv4KOas6drmcgBzCYz/NLhCSyFEZD3NqnnYwq+z4r38rtPiytAIR1BXJC45ZwKwwxKIRm0dWmqc4lycmL3OawOgn6WNaB3TSIgmoea9eirVTwdfrtWySvhAvFaRe124CXg+B0n2f6Y8Jcm1ggEruq787P9uahfsRsvBnFrO/QqwQm9zRPo/v4vhE1uf/76HM8XWyEevpUmsTGp90CcEJEsdvAY6fG7Xglb6aYvnFOnyV9GMV9I+W6lr01GwfhA5Kl/kxxlFNvSU7IEjKsOWyOMA+xzWW7JQoN1Z+qbqqHB+F4bh337ucTXC6mpSr4e2vnF1NUVwAwpFk0iFXMWWTKl1hDyRKjU7t+UI3sdyhtGTQ47o/Y2U4x3645dlEeNhq/SILZ86v6RF5Se+/hKXpl8MkppV7v+ahQUn6/qxywfWeO2YQkYoO8S8zS6qnMT6F1dm2B5aEBuF+wUu3nG/URwFJ9qtyVswtp+ka9ntEROsBoWlt0XVyiCwjptub4u0DhZJtFKP+FX9foHUUg3j/WDxGfOYoOBqN7Hie2sZdiAZwOIpMib5A9BltgttFwhkCn5KtY3/1T/ X-Forefront-PRVS: 032334F434 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(39400400002)(39860400002)(39410400002)(39850400002)(39840400002)(39450400003)(209900001)(24454002)(377454003)(305945005)(7736002)(6486002)(2906002)(83506001)(229853002)(53546009)(54356999)(6306002)(86362001)(76176999)(31696002)(50986999)(81166006)(3846002)(6116002)(54906002)(53936002)(77096006)(50466002)(25786009)(53376002)(5660300001)(33646002)(42186005)(110136004)(189998001)(38730400002)(31686004)(8676002)(6916009)(2950100002)(6246003)(36756003)(4001350100001)(23676002)(65806001)(65956001)(230700001)(4326008)(66066001)(478600001)(47776003)(6606295002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0158;H:[10.236.136.62];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwMTU4OzIzOlR1ci9PMWxlNDJxOVR6d1Jmc1hkR2poYTRs?= =?utf-8?B?ZjF3U1pvNU1XV0NSNHJja0cxKzIwSi9qYmNlSzZBRkJWQklYMjFONldpaTJv?= =?utf-8?B?RndER0hGZzQ4Q1F0QTA3dmdveW04NkVJb0FTa2hTdlNnOHFwcjlTZUl2V3dj?= =?utf-8?B?MXF0bzZzakdoNllZdUkxMnp0d2NXNmN6Q0l4S3g0em9BMnJzenNvY0FEMDdB?= =?utf-8?B?RzFBQ1V2M0hVSXd0blBEdUFCN0drZDhsWjYzZ0hKcU1BWlIydUk3dUNMYThT?= =?utf-8?B?YnV3NDhVRXNtMlBJVnVUclZJL1ZpN0VqYWlqSkptZml0dUhzY3d5RXZVRnJJ?= =?utf-8?B?aGkzN1N6UkhYUTRzOEpmZ0FtWnRPeUwzNWsvQjMyOTZLeEZoWGRyVlpDU0FJ?= =?utf-8?B?RER2Zk52ekdmdFIxZndMdk15TnkxR1Y5am5OZUNrLzFEZWd1OXFzSWYyTitz?= =?utf-8?B?Wm5CTW12YzJ2K3FPUEllblluc2lMMjI5ZEF2Nm52eTF2akxYRkU4aXRndU5R?= =?utf-8?B?UndEbGVIUXZvUzBla09CUFBhWlpqc2xlQkI0aWMzOW93d1VlTlF6NWtkQ2FH?= =?utf-8?B?MFZOU242clN0UGVYZ2p5RFU4SURjYVVSYW1SVDBVdEZDaHdyS092L1lJWGhC?= =?utf-8?B?WHJyMytDQWVGOGVLcDZ5NGVKZDhiR0hHa0VEWm1sU1FUcVozUmJ5OGlDa0FY?= =?utf-8?B?aTlYMmtpVDFYQzQvSTIvNENERFRVQ0VwdFBmME4wV1UzRUlONWlHdmEzWjZx?= =?utf-8?B?WlV4NlBWdThSNk5RSEIxSzRpZ0VWRzZhY0tVa0tOZXNsdWpwNFlWRURZYzNt?= =?utf-8?B?ZjR4NXZ1MXpzNnRrYlU2VWR6aEFJekdORXF0NGhOQUxoTjM5VGxxZEh3d2pX?= =?utf-8?B?OEJab0pkRHZZOU1tT1V5YVBFandRblFid1hlcmt5MUJidzNuNzBHYzI3Tk9t?= =?utf-8?B?ZWMrdVYxMlhwUmc2a1poY1IzbUQ5Nnl2YklDUzJzc2huYi96RW0vOWVmNndH?= =?utf-8?B?NUNvSFphWlAzYzRjSW05OHJxdklJTHJYR2JpK0FsWjB1MW9PTVJ6cDdxZWZy?= =?utf-8?B?Y0VxQ21TaXUzd1NjRUR4Skk2b252NnVyVWpvVGVMdlNYdXFuamJuZkgwMUJv?= =?utf-8?B?Vkh1TG1oWExaRnRhMFluWFo2czN6SnN1b0p2WGo4MGZ2akdjcS9heDdDUkFE?= =?utf-8?B?MVlMcHFFV2lya2poR1pyTVNmMHJEQXdKbFhkZHdBemNLNkU3dGhrSDkyNGQw?= =?utf-8?B?RzF1THdwNS9Jc3VyRnh3NjlHczdUeTNXM3M4SW1Pb0JEc0tManMrNE5WZHVB?= =?utf-8?B?VEpaUkJ0a29TYUprMnNycXIrcnFhd0dDQ0hLbFQrK2VsYVh0WTl6NW1xNVVE?= =?utf-8?B?RGx0eWdtZTFrblVLdmVFQ3NuTThhUGY2TTdJb0l6dnV3OHpwWEFURDdvOXFS?= =?utf-8?B?TlorYXJsTEVrQ3FJNTliNE02djlTL01SWlpKQTk3Q1A2b0s4cDFpOUk1TklC?= =?utf-8?B?M2RGZFJiZWFMa0lGWmRZQ042NnNjeDNYcmpRdk8ySjhEY2R5WFBXQ1d6T09Y?= =?utf-8?B?MzJETFh1SHNOUFJxeTBMakVpZHZQUnAxeU55bEF1Zzk5OWIrQUlxVlBKNWcy?= =?utf-8?B?NFNJRUFiRnZRUFZKSlJEOEpwZEFKdkI4ZWo3cGYweGllM3BlVHBOUW9YaGgw?= =?utf-8?B?Q0ZnNTEycWRaODNHSlNzUVpieXBtRHJEOFVNckxEUUo5dkZFSEF1TGRJek11?= =?utf-8?B?eXNXNWcwL0JabW1jKzJCUHRLU2Q2dHpjcUlBcWhKcjFJc3J6UzdocWJqZ0Ju?= =?utf-8?B?QVlHSDFnSVFHbFpqYlZrVWswSDhXZm9XdXgvY0RoUXQrak9iYmxsLzNvVlRS?= =?utf-8?Q?hgURbHY44pE=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;6:8G0M4jU2xHxrOsOEkJa7MuHoJrnaw/rdSwMoZpdTgGx0cuL+2NKNQuACMJgHrsP0XZ7ajXZlcIn8WxRju9vT6njXMk3keF+RSO/EarO4wjuTM4psKahJ5wpHEpdkvNyPJV61h2ur7/oCbWr6Y//X98JSAsSXF3xWrT/9GS9ODeIzR84gjVk9f61lsLkMSDx8ATk7LFpri78FfHLYpBe8wG4Cd/1mURahjxhUhJH4IotREOVWc5pSRYoxRRngXqO/mFAWewFBbN5UadMbMp3xf431cggdUBtGInYVC5R1V/y+DUiyT3HIiHvrZMF01maCaAZJCMtBdFlwg6ghe4pO3Z5Y1QJeJt778z0PQUPYSAKFheKCZwcq2KMC6cbjpZCnY1+8e+eEKcePXYeDzmFc8GVeu9wthEVqIE0OgfxgYTuVU+24Ya8Qv4YMW+fMSRpnZQbNcSXxY0JkPOMul2iLfztfc5AArdyTxb/WjlCJ7Zo9SU/suuz6Tpq83hOXOE8wV+ag9a79C90NrJgiDExIBUWOGl/V+iG60JZVD3LTKxY=;5:q7Lfa8jvcYCU3ZFnmye+lt7w9vD5x4Pl+U12iQIBDWdid45XExL4qhAqo+du4N6TU8CM0O0+LlNdny/GU4l1DbUBBOoCP6ikNI9OrxcNpA/Y9sqFq1wiEmeHQdvM0kdYlM42r5Jp8aK/z1YcKWoHntqL50kkYJP/B3pYhwc9b1o=;24:qXbUcS7R6ukJiXy1HPo1pVxrp2QYRNausWFFKpHoeTh0kXVXK/v1tvaOg+5TxNRtuHo0h5x/0iDiewio4Pxxva5TVqaBDAbFpEWwbZWu4dg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;7:uxlgWyRnbMT84S9h5VWxWNzYfoa15mwPt7LYTzi9xG8lWXkrTJJ+prkmy1bkSGiYjs3moUmNxaweFn+7W5uwE+oHIWDwusMETOi6867t0OqiutweNlwFDo1bLef7W2Pv2mklGO0gkhSDWoyJOCA7pHuSpDgBfUuUzKuG12tw5fWQAAElTLLy/n/HUG1DLxuCWVhBnUX64dUyPOkIwDGki2/taOzasGBnEmkE50xIlRdcATSWwDaKRDqJzSS8vJWOx2UNb6YR6gky+w+H4+Uh8qMTqasmZlAPjFpemC5G1IP0RFMcKo2DbaONds+kCcsR2juDtMtljQc0Of8V6N5b4g==;20:3d9tjOQ2A8dnPGe0gMe8ZemIKBzO/A8ftZT1J1hmC3i+BUNPxL6UumAimdemMg5TEeMdcYf5BUJeJfaDIefbr7r32hvM+j2rpp9vRjpik89Q0f++HP756QwivSK4PH6FRPXSxCic26FbbCd26FkMNZ/m8TQLraq4gIMg6GIec71VAN5HLJQHOWoKe7IfAzGuJP7HbLDEjwH9DqAy48U6w3uyK/RSb9Xg2mkJ7A4TYJzYWapw1p+38bJb8sESnhp6 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 May 2017 22:09:32.9995 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0158 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jorge, On 05/30/2017 04:05 AM, Joerg Roedel wrote: > On Fri, May 19, 2017 at 11:12:29AM -0400, Brijesh Singh wrote: >> From: Brijesh Singh >> >> On AMD hardware when a guest causes a NPF which requires emulation, >> the vcpu->arch.gpa_available flag is set to indicate that cr2 contains >> a valid GPA. >> >> Currently, emulator_read_write_onepage() makes use of gpa_available flag >> to avoid a guest page walk for a known MMIO regions. Lets not limit >> the gpa_available optimization to just MMIO region. The patch extends >> the check to avoid page walk whenever gpa_available flag is set. >> >> Signed-off-by: Brijesh Singh >> --- >> v1: http://marc.info/?l=kvm&m=149304930814202&w=2 >> >> Changes in v2: >> - move gpa_val setting in pf_interception >> >> arch/x86/include/asm/kvm_host.h | 1 + >> arch/x86/kvm/svm.c | 4 ++++ >> arch/x86/kvm/x86.c | 14 +++++++------- >> 3 files changed, 12 insertions(+), 7 deletions(-) > > I havn't checked in detail, but maybe you have: Does that take nesting > into account, where we might run on a shadow nested page-table and we > actually get a nested gpa (which still needs translation) instead of a > normal gpa? > nesting should not be an issue. all we're doing is avoiding the GVA->GPA translation for the lowest level guest. The nested case should still use the original code path and perform the nested page walk. I have verified the nesting support and it all seem to work just fine. You can find the original gpa_available patch here [1] [1] https://git.kernel.org/pub/scm/virt/kvm/kvm.git/commit/?id=0f89b207b04a1a399e19d35293658e3a571da3d7 -Brijesh