From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753810AbdCPSls (ORCPT ); Thu, 16 Mar 2017 14:41:48 -0400 Received: from mail-cys01nam02on0074.outbound.protection.outlook.com ([104.47.37.74]:52685 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752832AbdCPSlp (ORCPT ); Thu, 16 Mar 2017 14:41:45 -0400 Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; Subject: Re: [RFC PATCH v2 29/32] kvm: svm: Add support for SEV DEBUG_DECRYPT command To: Paolo Bonzini , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , References: <148846752022.2349.13667498174822419498.stgit@brijesh-build-machine> <148846789744.2349.167641684941925238.stgit@brijesh-build-machine> <4579cfdd-1797-8b47-8e00-254e3f6eb73f@redhat.com> CC: From: Brijesh Singh Message-ID: Date: Thu, 16 Mar 2017 13:41:36 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <4579cfdd-1797-8b47-8e00-254e3f6eb73f@redhat.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CY4PR19CA0026.namprd19.prod.outlook.com (10.172.173.140) To CY1PR12MB0714.namprd12.prod.outlook.com (10.163.238.20) X-MS-Office365-Filtering-Correlation-Id: b79434ed-608b-4423-8417-08d46c9c16b1 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081);SRVR:CY1PR12MB0714; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0714;3:FstmWEy4X0k2JVTewQlGMn42Dn/WrxlnyWR+AOg6mw1vl96NC+mu0rmlp9LR31u1soqlzoeCksYTiD6dbLJJemurGuLNXouvXvn+u9yWtsKJ2Ap3iG3U/iohI4SvJnbJNwbG5ZOgEpavLr6YKZqUs07kDha9OoXVgFth3h0SJtAna9wBRNAC1Zicc/emn3kdOFt69zEXGxpX9G3jtACRkwFG8NSQ1Gu7h8RVhos13YAdey5Vr91XWBuywrDMgtNSDx2Kp0Vqt58UkZMVrUJ/aPi75FQJts+HV2qC6lOv3PI=;25:aclJjsN+3BlQ1QueF+DlY89j+R9Qfuhc35r+qK9lYXQzKVpsXfpyuGPl6vvS5Myms3sVT1TwzmtI3/FhxQRD7kHzhdSThmn3NwdhbmwETXlYIxssVkVzLqeeGA0srM6XSvVmWDL2nNdPNCRD/oS/rMTSOBAawyYWYR2DzLzLsBX+H+x9zMKGmmZAPVVECvsTzA2zRSCambWErnI3X6fafdj9d4mHNVDwCIHLAtngwCkoNK2dN9VMS4c3wX4qWB2GT1TGYzlMTzrB0b2Hc+MXM/5qaM7qVaHM9TAL7iFrCQqvv1XZFfvEzt8LONsbrysCcO9Rau1Srl/rM5YPK37fVh32IyDX0H+eKRKP7MG0Zl6ydXY9VHmZ7uprpg0vqFUch/GZXi/iE5zr1aklD/uZRN9o3MQYFtg6urftMhNQCS/krlt6t7ptB9Lnjs1JLCnh3C6BvoKlFbC6D7KB3EbFnw== X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0714;31:3E80TDwMS6rXGbu2rE6Zdb+zOFVS/afjBf4R9RJDl0VmhJVIrYamxLWyrvF143hMW7e983STeb7gtZDsHvZyt333FyjzQWhVQ3py0sh0sHrgfXAOINrsMXLNhOb1qyDcXuxbvnzHoM4L80gXAJ7v5Ih0tPMAOSJS1MGWMjR6OW9Zd91mBzBLHfVNm4kx7+qqMYqF0WxnPEyFifTLSBv431jPc32JfMTGjfoW3q2d41w=;20:oKcwyWxOQoP13EzHF5SvW/FqPcHT3ZnaMbtNg/E0REQ/ABYn3kRoA/k4bLcyzWO53dCquIB7rX8SZo4mH6ZvPyHOelkOsaAkqYOBwW2iBY8PeLyRJlLsnEv7Cs5NfH68OOhHEXCy98Xgeqz/+vWagkPOrCOy7mOYKtb+gcYGeWP5SIRoux/QUSSKPhYeO04263sKROspq5TqvVMJd1iVqUot4RxUZUh38BBeu9V8Q0eOAonlcnY6jyLvXdsDIhptaoUK6DeBqgEnyLF/Kuco4RF+D/Tb4oTaI9L8bOGolfYja+HWESxiY9QCbrwt0Njy/clE1WBkRK6TVLdtk6TuL4+LtofewUYtkE7pV1u/5RTmchZl5CV8XS0JNzHr5cnC73G34x/09fAdyixvOB+jlzgFRhb9CzM2X1ljL6xaj+ZmslkQs53W5eONfdXomyzaSN+SDJ5Iki6PLs6AbAoSlSzZWzu9SV3M6X8DFiadZkcoDJVPK2Kd4MH+YXR9f83V X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(17755550239193); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123558025)(20161123555025)(20161123562025)(20161123564025)(6072148);SRVR:CY1PR12MB0714;BCL:0;PCL:0;RULEID:;SRVR:CY1PR12MB0714; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0714;4:RsTwRKAqSRHRegYWkZIiBsGKPUMpxq8KztRcAx75JCVHs0y3UDoxpy7WpyLK7PI+HeRz+bXFBCXNxt1CnREu1E9XvCiFvg79vtlxhq4tLVMOdTGx71vw1YbpVjvNtFuKrgopXRbfgC9x5/xlraiSbaQkyxyRVcFCxr+IWvESIPaugdJMOybUsMACOt6I9WSbegat+FP8uDcgJfYBh5pxZ3cSCtRmPTRUINcoEJDgbWZCmc8ytqu0Qq011SWRevAdGnBJEZ3yy1N73qE1IAprd6Dc7b6pYMQYnxSHloXMdEeectK56qLS7B8UUsdorhP2Qtx4sUK+IenkawHy1NE11Z6Ac5SZAoTsvz/T/GOHrN2VPqfkudCZ6GBBmg4Q9U66vvGrcU2ne8E7VS4VGGJXW+hPlso4PaRjCnw84sMBir0/p71RgKmaVuZ9IPiF+nxAjTZP+kSoZd7xvHo9doydAGriGDuL6u1AeGAdpa0d5YygxAJEV2i4ia10ODHZ8l04AvgJFDtwcXZnH+F3hiYXAjnjLz960JgDTRYDg2B/QSjIt93c5JGLdJp+a3YIghUCGajZR7R+n/ZYBYRqq48GhNjgdki78x9qtUtkDrl0fSQexQT9DAbzoKBac0bxJPk7AtHYyVuv69xAOZxEFPM2l3n94dKZDG6KhgGy6H7vnQY= X-Forefront-PRVS: 024847EE92 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(39860400002)(39450400003)(39840400002)(24454002)(377454003)(65826007)(5660300001)(305945005)(6246003)(38730400002)(4326008)(66066001)(7406005)(7416002)(90366009)(4001350100001)(65956001)(229853002)(83506001)(189998001)(23676002)(25786008)(77096006)(7736002)(2950100002)(6486002)(53936002)(47776003)(6666003)(6116002)(33646002)(230700001)(2906002)(50466002)(42186005)(31686004)(8676002)(31696002)(54356999)(50986999)(76176999)(2201001)(81166006)(53546007)(86362001)(36756003)(1191002)(921003)(84006005)(83996005)(2101003)(217873001)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR12MB0714;H:[10.236.136.62];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTFQUjEyTUIwNzE0OzIzOjVQQytWZkFkSWxlajc3K3F5N1BlNytVOUtT?= =?utf-8?B?S2c2cUN0RTRtenV3Q3ZFYmJHRWcrcnZSS2hBdjFDTFdDMjJhK0RvdkxNN0pp?= =?utf-8?B?ZE8vanBGOFBCQTNCeE56akQrdTc4dHlZajhYdW84a0piSG41L0htY2FqdEsv?= =?utf-8?B?TDVHZnAwcTZoekplQlBwWWUvMG03TjNNR29aM0Y3WHVDT2V2YzdyejZIdzFG?= =?utf-8?B?ZDhtdldWd2d2TkgyTkpiSnBEMU5OSGl3NmpyRU0zZkgzNnR5N25raS9QWjc5?= =?utf-8?B?RVdDcWtJek5vSEJ6eDY5VU1EWkVZajVlNjZONzc5RTJNN1RnbFZBekkvamdZ?= =?utf-8?B?UGVRclc0RDZNSVUwMHlueXdiV0FNbWpOaHJwemJVOXBtYTdoUWI2QjJ2bFZB?= =?utf-8?B?b2tBZFh5MHRlNy9GbW5la3FhMWlUL3ZFRDA4RElRSXdla1VrdCtId2dkSC96?= =?utf-8?B?RmRvTHlUVTZLdEpqSjVxelZqdWlXNWwrb2hIbk0yQlhTWmNmOW5mcjZkMTNz?= =?utf-8?B?QXZqNTRSOGQrUjFNYlY4WStwckZEaWtIMVRZZTFxT0NrZlFLb0pzM0tTVDFh?= =?utf-8?B?QWNtb2dQVzZqTVZtTDg2MFVVajBSZGFLR3FiMVlqUjlPSkp6b2RtZ1hkS2lG?= =?utf-8?B?ZHEwYjEzbGpOOXYwQjU4dEZibU9pSTJQNXRIZ3ZaV1orNFFEMlZRZ3dtdU5N?= =?utf-8?B?ZXQ3UzBEU3pLWkZSMTZ5R0hZdWZoMXdSMFFMajB2Y1NOZ2pLVklJTklRVlkv?= =?utf-8?B?di9rMzdONkZKdExqSUk2OGFUS1ROSFhUMVh1L2V2U2J4S1dSYXM5VTJSMXlv?= =?utf-8?B?WWhKK2FFR0QwbzBOMitJZjJZT1JzU2tGUDhrM2wzUHZqWHJiVHkzZDhQZGNL?= =?utf-8?B?aSt4K0xHUUlVVjQ1b0JmdDBOczY0OFNqaU5oK3BWUmhPeHVRZ3NFN1NTNlI1?= =?utf-8?B?Vko2cVNGN3gxYWpYWUUzVnUvMnpYdnpwc0xObVh5WW1uQlNjUkhXdFVmc3Bv?= =?utf-8?B?Y2NVYVVuQnhjM3hTWWxFcEd4VG5HRC9TRXhsdm4zWmJ2MmFYaUlkTmF6cWVS?= =?utf-8?B?TWlrOVN5dHZrUFJPNTAwTU1HbW9kMUtOcUZSYjhBRzVlU0RZek5pYTIwTVFB?= =?utf-8?B?WCtFNHdWc0tYcmkyeE5rNS9UcytuQkJuWFhnL0xPM2J4U3l2dUs2Rnl4bnFB?= =?utf-8?B?WlFlSjVuamt2bXk3MktpVUsrZjBIcXpLWStqY09qekJDM1VKUjQzNU4vWDNQ?= =?utf-8?B?MVFHNEVGNlZKZzFCOXg0Tm9WdzhqQ1hFd3Zhc3M5MXQ3NHNLUXMxeTNXWTZF?= =?utf-8?B?Q0dzbEJ0ZE1UT3RzMExvQVdkL3ZrU3BuZzdrQUd6VGRSSVRMdkhPVC9HakFC?= =?utf-8?B?Q3RKek1FVUJjdnI5R3BNZ0lCY1ZFWEZRY2ZxNVZFVkVRVHdrOThsdGZzZ2xk?= =?utf-8?B?SzYvVmZiYVBLMjRPVVJibGc4YWIvcW9lSkZYSjExcVc3WHE5Q2lFVzcySWti?= =?utf-8?B?cVVBMGM5a0EvY3p0bDJCbVJMMHNtZ1hwbVJiSXhrc01rdXZzSlFGdFo4NEJC?= =?utf-8?B?b0pjT1g4ek9RbDlveWVkU1pNZmhjbHVReS9Qdy9vblE0Y1FTRi85eXJ2UnVW?= =?utf-8?B?aUQxcW05M1ZUY20rK3hMMzQ5L2RQY2FGV01wcEkxTGdXMjg5cEpMSTFKdTBh?= =?utf-8?B?Ly9vanZQRXFqRHRSUE93Z0xnVjU1eGpET1VxVXk1ZStPaEJ6blFSMDRZM3p2?= =?utf-8?B?T2EzbzFqYnI0ekw5M2dJOW1JRWdCemVoaHI3VmF0YnZhejhYRU42WS9kKzA3?= =?utf-8?Q?64BgDCLm93Sps?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0714;6:vu9OevC4cnrpf4X+8FAurys+bxzvgDekYH3GtERVV00krnqlwf3j4yhcvVvaB8+aYFK/T6ID8GfErkjQXGa2MdnRkrAsXpVcvFXRImWfQJsyuRBzuZFakTkB8YjqcACc04+8PZSe5kphNTDPfhAZ1uRxr8ukJmGec4lYuKOE5rwtuF2j7S4ccusk7ag+BOSQo8arW6nX8RtGYGUZxOL4LDEKtVGyV8U5zhOV4i1Sns1yfFLZkaZOsUBzN46gyfwVKsOf4NUNp8VYonv89uomr4eRL7s7BraIoMMrJns24j+ISZPpN0rbfUj7oZ5efM3irB4+nlUowfVSdjm7Wd3QYUKwslSZC4rhhNgNDu9IRpcNqLa9JRBE24UwwN1oBAvDvKuhVWifVMduPH0cs21J1/5bdKfICn+3xnyQZruyeNQ=;5:JvUZe+OnpfEv5zSH7PkxJzR/aD6WnvlWBGLzkIwCuoXiSp5mqCVjdwTwI9zTDnLeY2fHTG8yTGlcA3YJ+FiuQSYjcKw/rC/NqNvGIMbgnq//PLmpLIvvY6NgDm9HR1OOQOI2X3KOvB9AwIA3iXUaIQ==;24:YHayj5QdIASNRjp3417EvQsbpU1q3KlSe6+ZMZ2RAEvHRWLHpGyqqS7eMnivUFG9TbHNeK5vmIP8/HiMJI+LTXQ2WaPrHqsm//SAEc0lcFM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0714;7:zizCX3CBZhZ8aoI5K14omEHCSMuzqE8H6tlQkEUJ+rYqW0grx8fdsG5AORRjOjj8Bayzol3E6J0zQpIJVLZceSOFxvnbqGcCPDN3MWReQIO2icwHopDOXTkuxdNNEcvAnG1nt6wE75TPStsoD9GH2j+BlFT1p7YJjQw2hN6P2IJ33tyOOhwha/4/VKzP+gmYL6ffOucTovX6BXbbsXdmO0Lihs3z7PoIEjrM9BmY7gqcKQEp5VsvPiMc7lWuZojHc25m1MYVBOPf64jGrfdhfF2J4wPPjmyIEaAtm+NkTfRBqwZ0xdXNlaR/giZ4q4iDYq8Z40z7SG7Smgt71JOJWg==;20:qog1iGdcQZo4GcLd6pRKlptFTpeV/lxnR+Almc5THf45CL4xAzdGcSmmbMR3JBKp1WlRCMpFPMnG06TcyR4cZkBWbRpQ0TVoXFx338LezWu1Gj+JenhO2UVlYeb1fMt21cI+kba5bYDijTV5wULBgppDbzfB+BVVPi1f+2J9DI4frdHTEMR71M+cBzToywlk/DuOSp6R011BiK61SEktc81o1wYMZoN4N2L5VjypINMvVfGV0msPJd+a4jx/kdnu X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Mar 2017 18:41:39.6574 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB0714 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03/16/2017 05:54 AM, Paolo Bonzini wrote: > > > On 02/03/2017 16:18, Brijesh Singh wrote: >> +static int __sev_dbg_decrypt_page(struct kvm *kvm, unsigned long src, >> + void *dst, int *error) >> +{ >> + inpages = sev_pin_memory(src, PAGE_SIZE, &npages); >> + if (!inpages) { >> + ret = -ENOMEM; >> + goto err_1; >> + } >> + >> + data->handle = sev_get_handle(kvm); >> + data->dst_addr = __psp_pa(dst); >> + data->src_addr = __sev_page_pa(inpages[0]); >> + data->length = PAGE_SIZE; >> + >> + ret = sev_issue_cmd(kvm, SEV_CMD_DBG_DECRYPT, data, error); >> + if (ret) >> + printk(KERN_ERR "SEV: DEBUG_DECRYPT %d (%#010x)\n", >> + ret, *error); >> + sev_unpin_memory(inpages, npages); >> +err_1: >> + kfree(data); >> + return ret; >> +} >> + >> +static int sev_dbg_decrypt(struct kvm *kvm, struct kvm_sev_cmd *argp) >> +{ >> + void *data; >> + int ret, offset, len; >> + struct kvm_sev_dbg debug; >> + >> + if (!sev_guest(kvm)) >> + return -ENOTTY; >> + >> + if (copy_from_user(&debug, (void *)argp->data, >> + sizeof(struct kvm_sev_dbg))) >> + return -EFAULT; >> + /* >> + * TODO: add support for decrypting length which crosses the >> + * page boundary. >> + */ >> + offset = debug.src_addr & (PAGE_SIZE - 1); >> + if (offset + debug.length > PAGE_SIZE) >> + return -EINVAL; >> + > > Please do add it, it doesn't seem very different from what you're doing > in LAUNCH_UPDATE_DATA. There's no need for a separate > __sev_dbg_decrypt_page function, you can just pin/unpin here and do a > per-page loop as in LAUNCH_UPDATE_DATA. > I can certainly add support to handle crossing the page boundary cases. Should we limit the size to prevent user passing arbitrary long length and we end up looping inside the kernel? I was thinking to limit to a PAGE_SIZE. ~ Brijesh