Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp1765267pxm; Fri, 4 Mar 2022 03:06:42 -0800 (PST) X-Google-Smtp-Source: ABdhPJykbtauh3gebhpSoaajTeUXB3zqkTV0elsySqOAvgyDmNT17zTibqhoB0No0rBafIGAW7L5 X-Received: by 2002:a17:906:c02:b0:6da:ebb3:b1c4 with SMTP id s2-20020a1709060c0200b006daebb3b1c4mr18151ejf.719.1646392002616; Fri, 04 Mar 2022 03:06:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646392002; cv=none; d=google.com; s=arc-20160816; b=SA05AkRy0VrdmYms9bIWQmI55alrpouTzFptOta52NOXAM/jOucy7VHaJzslusP8CJ o6yIdyiDrkxeOcjuCtktTznckmaFPMEr1GRaBVYz/UJ3x8MrKwpVoOe4PU8NnUoTDkxz 7um0RVPkLXwki9ZCyhWKq0lowKfrf3hrFsn4dY5WRtWuS+K5q0yetGNF0T5X7ezolEgj b3EhHPvHyzhixPSXwShsvAu21yiypA1sFlEzYYg3mtYeGVd7DmbtU/DS6cTOHF9AWO5L 8PZyMAZMAJau8N8nbhuFI5ns90VC04FTKejgIWGDAREhkqtSw/V15KLdjuXCpU5RMmhJ 4tEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:subject :from:references:cc:to:content-language:user-agent:mime-version:date :message-id:dkim-signature; bh=FdGlmFqkGlJlq8qLeaeL86YRrmQnL6/eKiDO2bHCB9k=; b=YtLnu7vWTynEv+2J+UerYh5GCh6cckUQnTCTeH9iyAJQ+Sp8XyTgDsUMyAB86DJUVK UHl5yIhUHIGHP4dP8EBeKGzUk/XrZLmlWA7t74rljJQb9ArMhsjdzW0bWWhlLi0a90EN OrQ7KsOvs/k87npZdLFcwd/BdtS8AlKVJSQI9ZuI/tBedp8J8jzSMYooWP4yGWOVVc6J Dj+XQG9wGeG2rMHJZf0gRHthhXdeFPTPM7TcwqeVYCleQMkxKCfxx2dAZvIVpb+CzHQ9 JHLaAlu6YpwtAaVqooMI3EuwVqdbxdmPVglpaueZGYknxPUPzo2f89OgMW7jAszg4prf tbFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=JYMrLkv7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k18-20020a50ce52000000b004132b7eb1afsi3315784edj.560.2022.03.04.03.06.01; Fri, 04 Mar 2022 03:06:42 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=JYMrLkv7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233327AbiCCRer (ORCPT + 99 others); Thu, 3 Mar 2022 12:34:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57598 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230505AbiCCReh (ORCPT ); Thu, 3 Mar 2022 12:34:37 -0500 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 776E3BAF; Thu, 3 Mar 2022 09:33:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1646328828; x=1677864828; h=message-id:date:mime-version:to:cc:references:from: subject:in-reply-to:content-transfer-encoding; bh=/6BWrWtvMDgxG3GRtmu6+t9kH9b6E5eZZRPbC6t9AzU=; b=JYMrLkv7yKJlhiGS77Uea0+2fxGDbjwVhHefPfZTIVtDrzGhl3GQM1nZ e3yefVeALKeERJmIGHCTzIIKll7h5U7Q34YDfs21st4PGmEZrebUyeW50 osOf5Q2i55SULRrp89FSqBFzBaX+pWsmno4s0P2LeoMrrfPoYrgXt1PDi l7+nSh31R0cpjVEpoKBt2kVUQtir8WL7+DtIBRKnSZZMTHG0AtOiXaDZE JIkrydtquFJedlU/nDQHXGsK8NU5rLpaNmgAQQdgwG7J6Y+4j6n1v/uR6 hfHlVT0LcBGbvv2L6lBISbg3qAlJ8jbf9Dog3IZZ1Jtzf4qMhXOkPsGMF A==; X-IronPort-AV: E=McAfee;i="6200,9189,10275"; a="253477473" X-IronPort-AV: E=Sophos;i="5.90,151,1643702400"; d="scan'208";a="253477473" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Mar 2022 09:33:48 -0800 X-IronPort-AV: E=Sophos;i="5.90,151,1643702400"; d="scan'208";a="642197252" Received: from eabada-mobl2.amr.corp.intel.com (HELO [10.209.6.252]) ([10.209.6.252]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Mar 2022 09:33:45 -0800 Message-ID: Date: Thu, 3 Mar 2022 09:33:40 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Content-Language: en-US To: Brijesh Singh , x86@kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, linux-efi@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-coco@lists.linux.dev, linux-mm@kvack.org Cc: Thomas Gleixner , Ingo Molnar , Joerg Roedel , Tom Lendacky , "H. Peter Anvin" , Ard Biesheuvel , Paolo Bonzini , Sean Christopherson , Vitaly Kuznetsov , Jim Mattson , Andy Lutomirski , Dave Hansen , Sergio Lopez , Peter Gonda , Peter Zijlstra , Srinivas Pandruvada , David Rientjes , Dov Murik , Tobin Feldman-Fitzthum , Borislav Petkov , Michael Roth , Vlastimil Babka , "Kirill A . Shutemov" , Andi Kleen , "Dr . David Alan Gilbert" , brijesh.ksingh@gmail.com, tony.luck@intel.com, marcorr@google.com, sathyanarayanan.kuppuswamy@linux.intel.com References: <20220224165625.2175020-1-brijesh.singh@amd.com> <20220224165625.2175020-43-brijesh.singh@amd.com> From: Dave Hansen Subject: Re: [PATCH v11 42/45] virt: Add SEV-SNP guest driver In-Reply-To: <20220224165625.2175020-43-brijesh.singh@amd.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE, SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > +++ b/drivers/virt/coco/sevguest/Kconfig > @@ -0,0 +1,12 @@ > +config SEV_GUEST > + tristate "AMD SEV Guest driver" > + default m > + depends on AMD_MEM_ENCRYPT && CRYPTO_AEAD2 > + help > + SEV-SNP firmware provides the guest a mechanism to communicate with > + the PSP without risk from a malicious hypervisor who wishes to read, > + alter, drop or replay the messages sent. The driver provides > + userspace interface to communicate with the PSP to request the > + attestation report and more. > + > + If you choose 'M' here, this module will be called sevguest. ... > +/* Return a non-zero on success */ > +static u64 snp_get_msg_seqno(struct snp_guest_dev *snp_dev) > +{ > + u64 count = __snp_get_msg_seqno(snp_dev); > + > + /* > + * The message sequence counter for the SNP guest request is a 64-bit > + * value but the version 2 of GHCB specification defines a 32-bit storage > + * for it. If the counter exceeds the 32-bit value then return zero. > + * The caller should check the return value, but if the caller happens to > + * not check the value and use it, then the firmware treats zero as an > + * invalid number and will fail the message request. > + */ > + if (count >= UINT_MAX) { > + pr_err_ratelimited("request message sequence counter overflow\n"); > + return 0; > + } > + > + return count; > +} I didn't see a pr_fmt defined anywhere. But, for a "driver", should this be a dev_err()? ... > +static void free_shared_pages(void *buf, size_t sz) > +{ > + unsigned int npages = PAGE_ALIGN(sz) >> PAGE_SHIFT; > + > + if (!buf) > + return; > + > + if (WARN_ONCE(set_memory_encrypted((unsigned long)buf, npages), > + "failed to restore encryption mask (leak it)\n")) > + return; > + > + __free_pages(virt_to_page(buf), get_order(sz)); > +} Nit: It's a bad practice to do important things inside a WARN_ON() _or_ and if(). This should be: int ret; ... ret = set_memory_encrypted((unsigned long)buf, npages)); if (ret) { WARN_ONCE(...); return; } BTW, this look like a generic allocator thingy. But it's only ever used to allocate a 'struct snp_guest_msg'. Why all the trouble to allocate and free one fixed-size structure? The changelog and comments don't shed any light.