From patchwork Tue Aug 22 20:39:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jarkko Sakkinen X-Patchwork-Id: 136633 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a7d1:0:b0:3f2:4152:657d with SMTP id p17csp267618vqm; Tue, 22 Aug 2023 23:19:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEeWNcS8WrxvtejblFXnCJIL/vejdez7D5VsI4wDz72DseZgRngyPqpTDkchaHlH/MPsrVI X-Received: by 2002:aa7:d058:0:b0:522:afec:3ca5 with SMTP id n24-20020aa7d058000000b00522afec3ca5mr9331488edo.28.1692771540610; Tue, 22 Aug 2023 23:19:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692771540; cv=none; d=google.com; s=arc-20160816; b=QprVKI+s9STLZx92AxrlPlaBUQjWWpzZNKDdFAE8Kmvnm+GpFfVUVPjy/u0mXOOLMS rvTq1DrbIpme4/gqzNnZWa0+3RMW9B0Es2TP/KrnuGC66qkQCbTHnV7WNEna1sCLDkOi k7XuwJZFO0zF3BGjJvT6FTCfco0z9PzjG1GTkgDDhD2qLSCK+0JWh12nCrk5hlEv3hfa Dcu23vlsvLsvaX+nJjTSu3eNl9lVohdxVy5YGgo2WdKvxYXNT4/EgCppavMoWFhxwUdn agG0KTgRiOLS+q3vFvjoCpOIkoLkohc1mHGg3HBqr/AeoKIONpHA0PRYgLKeaqGkzgsD pvpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=XwNQ1dITQd6q61IiDgIc3SJVbSMhBYt4jY3HvOeB3Oc=; fh=9JAkwd77noygGJdLGR1bgJdLBWcSmmWJ1wJBWtP3XRM=; b=x0g/+uO0Q9IopTg884zgRBG+nHG0AO65bccMVJrQJVaDkVdTLIZs+E/YYoauPyqT+W LkUn12NKojXsqDW5X1Okb5AN7qA9OVWf2fQw+tchbNtkSe82f086ThVZSW4Ml7MLx79c s2WuKZF/LdZWj0nYVXMFnf3GYAwmmwaTE/lyb6BPm8Ll9STKPGr2YQN9thS2vc9yM1k5 jLU2VckXh/ceGSolGS8L43jHpFhTBIKd/zURQd0T1K9ldoYOAb59aLKPYbZzdOMkb7NM wSeyoperDjxPR0mprsLy0wFN6cfz7vlKgRjSQ7W/BfgqPVdSohK6UH7lPBpDSqIE/cxd XSyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=R55u52RF; 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=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b23-20020aa7c917000000b00522580cd271si8136082edt.366.2023.08.22.23.18.37; Tue, 22 Aug 2023 23:19:00 -0700 (PDT) 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=@kernel.org header.s=k20201202 header.b=R55u52RF; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231163AbjHVUjU (ORCPT + 99 others); Tue, 22 Aug 2023 16:39:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34420 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229486AbjHVUjT (ORCPT ); Tue, 22 Aug 2023 16:39:19 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3EDC9A8; Tue, 22 Aug 2023 13:39:18 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id CC71D6467B; Tue, 22 Aug 2023 20:39:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A9A8EC433C7; Tue, 22 Aug 2023 20:39:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692736757; bh=olk3Xa6I7I4/DLU4D9iKqohQ9IwdhSuiwNTWLhb6zxs=; h=From:To:Cc:Subject:Date:From; b=R55u52RFCQBvWfVjXeXFdT43jvwopNLC2wbs/krHtWGCH4kH7eRlpNgiXJ+t7dPHu Xnag1SpjT+Cr4ii1N4dGpIZvZPsRLXfSGtzxFuZ+O++ach9DjnbQZMct8WYH4kZxPg wVc+BEzLfRr0TvO++BGnU30hhXYr2XNDZXjsoT61eRt5TuWSzfzmoW9CilTKQxPvXa nKcYCNnJVNUasPrn2zsEBdSWb8MjcJWaYhkg5vbpfilXjkguVg4cP4wihTbM2Q8Evo Wi/wXuTuKabVI5dLr0cLWQlFJ9qFd6u4PrZ3fgzA3JlNaRpm7vPAy+5gKRQcmI8kjn S2iDr37kSJVfg== From: Jarkko Sakkinen To: linux-sgx@vger.kernel.org Cc: Jerry Snitselaar , Jarkko Sakkinen , stable@vger.kernel.org, Todd Brandt , Peter Huewe , Jason Gunthorpe , Mario Limonciello , linux-integrity@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2] tpm: Enable hwrng only for Pluton on AMD CPUs Date: Tue, 22 Aug 2023 23:39:12 +0300 Message-Id: <20230822203912.2256229-1-jarkko@kernel.org> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774980743721578380 X-GMAIL-MSGID: 1774999611354250616 The vendor check introduced by commit 554b841d4703 ("tpm: Disable RNG for all AMD fTPMs") doesn't work properly on a number of Intel fTPMs. On the reported systems the TPM doesn't reply at bootup and returns back the command code. This makes the TPM fail probe. Since only Microsoft Pluton is the only known combination of AMD CPU and fTPM from other vendor, disable hwrng otherwise. In order to make sysadmin aware of this, print also info message to the klog. Cc: stable@vger.kernel.org Fixes: 554b841d4703 ("tpm: Disable RNG for all AMD fTPMs") Reported-by: Todd Brandt Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217804 Signed-off-by: Jarkko Sakkinen --- v2: * CONFIG_X86 * Removed "Reviewed-by: Jarkko Sakkinen " * Removed "Signed-off-by: Mario Limonciello " --- drivers/char/tpm/tpm_crb.c | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/drivers/char/tpm/tpm_crb.c b/drivers/char/tpm/tpm_crb.c index 65ff4d2fbe8d..28448bfd4062 100644 --- a/drivers/char/tpm/tpm_crb.c +++ b/drivers/char/tpm/tpm_crb.c @@ -463,28 +463,6 @@ static bool crb_req_canceled(struct tpm_chip *chip, u8 status) return (cancel & CRB_CANCEL_INVOKE) == CRB_CANCEL_INVOKE; } -static int crb_check_flags(struct tpm_chip *chip) -{ - u32 val; - int ret; - - ret = crb_request_locality(chip, 0); - if (ret) - return ret; - - ret = tpm2_get_tpm_pt(chip, TPM2_PT_MANUFACTURER, &val, NULL); - if (ret) - goto release; - - if (val == 0x414D4400U /* AMD */) - chip->flags |= TPM_CHIP_FLAG_HWRNG_DISABLED; - -release: - crb_relinquish_locality(chip, 0); - - return ret; -} - static const struct tpm_class_ops tpm_crb = { .flags = TPM_OPS_AUTO_STARTUP, .status = crb_status, @@ -827,9 +805,12 @@ static int crb_acpi_add(struct acpi_device *device) if (rc) goto out; - rc = crb_check_flags(chip); - if (rc) - goto out; + /* A quirk for https://www.amd.com/en/support/kb/faq/pa-410 */ + if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD && + priv->sm != ACPI_TPM2_COMMAND_BUFFER_WITH_PLUTON) { + dev_info(dev, "Disabling hwrng\n"); + chip->flags |= TPM_CHIP_FLAG_HWRNG_DISABLED; + } rc = tpm_chip_register(chip);