From patchwork Tue Aug 22 20:28:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jarkko Sakkinen X-Patchwork-Id: 136608 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a7d1:0:b0:3f2:4152:657d with SMTP id p17csp81204vqm; Tue, 22 Aug 2023 14:31:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGFr91lF3RuJwf2B/SqbQGr+hG7NMNS5eNRrUpFGBn66xaHiqfseiY9P6GXQCkYA5coKeZg X-Received: by 2002:a05:6512:3ca2:b0:500:8257:4b34 with SMTP id h34-20020a0565123ca200b0050082574b34mr6044993lfv.68.1692739899235; Tue, 22 Aug 2023 14:31:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692739899; cv=none; d=google.com; s=arc-20160816; b=FLlGN1aZU9xaRaQdSgWMMl0nFi3i/xsBHQWYpfZ0NC9O5yWGebCAz0ATo52eJUXvGx rk19Zxc6EyRu/0zRiZHSTB0lLE6Oy6uxlwupSrgeLnspCocC/5mB9dZUCoCZlCg5iszh D5hqtnweBwIhhcXMqMh92o+2eXgcP5RKGqOEjq279sPlEs80uq7ymT4SIlnxtTbo8o20 ueK/9KfLPVG0Ws4NcpOA49iaD08AeAizvQwLpLI51W7IV7Cg/lj40d1IqrNPuxWtsM7v pmzr+sracm6Z7gEjFns3/i4wkSprCoyEu2YZZ+WuxxQBkJnW2fCZgyR76NNpCGI1CWsH 32hg== 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=M5jaeGL1KfPHBRkMTMxPc5jtZZjRRZQmh0qpR2/KkhY=; fh=RDHxkcrTkKFq+S1geElXjjPdHj6ZFek3FeqLY2YQ+4M=; b=Ds04HRmUxxv3Cd/23X+3D/U7wZNOkYZj5365GvvKCFGKSJeAatRmUgU/dFGsd88+dZ EwfHV1QEzPcr4m5mBXB+yav5aOx4HhMks8um8puBOBDDFoV+FZ5PXQNvkIm5DK9cGS5p iUMYsRuLagx0l6k1ifJ+6PYcbRC3pNB9coXD2RL387VnpO7c6x0UgovQOaQVcEXOLiPB yLZJ+zOlzQPeGySCpcs159KjPDC+hqeSwLciioV36lYlSgMr1a8FZdbP2W1FVrojjlWl 8Y++2rtMdDU6m/PTx55Nb3uP2b7RNYJRCVbG7wjx6d0zgUreJT8n+zll0gCiaCBpFZp5 1Aqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=kQZ1H91b; 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 be24-20020a0564021a3800b00523ae81218csi7154437edb.242.2023.08.22.14.31.11; Tue, 22 Aug 2023 14:31:39 -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=kQZ1H91b; 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 S230516AbjHVU2j (ORCPT + 99 others); Tue, 22 Aug 2023 16:28:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49484 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230032AbjHVU2i (ORCPT ); Tue, 22 Aug 2023 16:28:38 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BCD21CC; Tue, 22 Aug 2023 13:28:36 -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)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 5413C6400F; Tue, 22 Aug 2023 20:28:36 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 37629C433C7; Tue, 22 Aug 2023 20:28:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692736115; bh=X76ftMTPE0gLVW8UyVak9DVYrvFfNpTPl/FN4KHJV+g=; h=From:To:Cc:Subject:Date:From; b=kQZ1H91brydNRglPflW7u8Cy5+meJCkRgNmlfurYKs6++thGZ95p2zS5fshPz2a0G JpV20BJ/vgxR9T5zyP9AaTxDxa+bR87SyYOjRku4VsnHc+IpjXeDZa914g9fNi1L12 S6Jgzsf1vrey+m46ZpiLRhY+68j6Qw4dp38UJb2ZqOvBj6LzbPm7tb70lrWwJQfVns wJMbubUYy4Eh5XjWXBs3xH/k+DHYqFnQ4iYOrtCk2ZReEdw9FL3lQ+lcvuCqriAK/D t/SfNgamVDkZ6qIecW/4O88hvWnKRzfPLWMzddNkItF9Wkun79QzYr7mMlyrVbay6G EWtANAJ5xNR+A== From: Jarkko Sakkinen To: linux-sgx@vger.kernel.org Cc: Jerry Snitselaar , Jarkko Sakkinen , stable@vger.kernel.org, Todd Brandt , Mario Limonciello , Peter Huewe , Jason Gunthorpe , linux-integrity@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] tpm: Enable hwrng only for Pluton on AMD CPUs Date: Tue, 22 Aug 2023 23:28:27 +0300 Message-Id: <20230822202827.2234527-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: 1774966432434035552 X-GMAIL-MSGID: 1774966432434035552 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 # v6.5+ 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: Mario Limonciello Reviewed-by: Jarkko Sakkinen Signed-off-by: Jarkko Sakkinen --- 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);