Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp41101pxj; Thu, 10 Jun 2021 14:12:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx+m77kkaxS9OPI8+BU8b07RMGQ/B5zp7ImJQV9LtpDCGTh2nLkt4Av/KHOZsAKKgSaHmhr X-Received: by 2002:a05:6402:311c:: with SMTP id dc28mr396575edb.291.1623359537279; Thu, 10 Jun 2021 14:12:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623359537; cv=none; d=google.com; s=arc-20160816; b=JEpsEop6kfm+MKu4qqLdwBdIZfOxSyz/BFnhAtDrmgMpw0YKUSKzCstiDLj+MqGLj+ AQpjeCvP21u2WM+Tm1UQul950IDvihH4MVFj/D8OZxE88sNWBYlzfGo+rLt+Qp1nefnr oogC6/41Wf8ZA2CtrCBQ/H3N5ej90iWdGwPftoFq7sNZwdQZwhKaBA5kp8orF1dCeH/T Tna5S/S9XZR+5WcHybBZKQx26C1HJGHZBwF4GuxK9/MvmQEM4d6g30AT1BQOJkAQ8Rfp nLz8sLZz6hoeJCfqEGWFJhlQhllXWmqqzv+jT0v6EVjP0ROwagk8+Wof0tp6BamHQerU SQpw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-filter; bh=whfJfsHqMmmVau0YBJ0E1Ux41l/udPG1ewedmaTL4yg=; b=jcVS/cq+b71a6kNMs54TJ9hJBRSmsm9dfuLhi2PxbvaBpR1qH9jlKOZk7EvsUruSbg z4dZbECgQnqtCF6BZB62K6IGLaZPVPmYKFWBNq9UeDq+rZxQy9z4Eg5jdOlXC+eyCHGz ZY8pCItn3Vc/rodZ2nioRTaeCOIGXO5tCzCTsGewQaBaC05eXvdxmcEQ38jRG9ibdTk1 KCYwRlDqDuRaZUqWg4Hgp0byCDoNOCdtwIaO9Zi9cELKSMf9ag4WsKecSUpiMq5D1uyb EEvJIabTaG3Pscz7Syz+ZoAzX6Fd7azdnMySN5gxESF8U8f+9y//500A5EaoTQ/ejaaB y3rg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b=FVGjl+t5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.microsoft.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a16si3101713eds.411.2021.06.10.14.11.53; Thu, 10 Jun 2021 14:12:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b=FVGjl+t5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.microsoft.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231180AbhFJVLt (ORCPT + 99 others); Thu, 10 Jun 2021 17:11:49 -0400 Received: from linux.microsoft.com ([13.77.154.182]:60446 "EHLO linux.microsoft.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230059AbhFJVLn (ORCPT ); Thu, 10 Jun 2021 17:11:43 -0400 Received: from sequoia.work.tihix.com (162-237-133-238.lightspeed.rcsntx.sbcglobal.net [162.237.133.238]) by linux.microsoft.com (Postfix) with ESMTPSA id 7035520B7188; Thu, 10 Jun 2021 14:09:45 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 7035520B7188 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1623359386; bh=whfJfsHqMmmVau0YBJ0E1Ux41l/udPG1ewedmaTL4yg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FVGjl+t53lgQXqPR6g0jjW7lwVMXdsNOtAxIgaPMJxOgUx1WFMCQKy9gIhwfySh6j lU09YKVgUMn1tsy3Ym3hVEAqTbt8lsdFv99NCPvQHfnUFLpSclNnDvqNZQAckWxBh7 6yuIt6W76iC00q/Z9JtyITaWOcIPtCfTUCW6fABI= From: Tyler Hicks To: Jens Wiklander , Allen Pais , Sumit Garg , Peter Huewe , Jarkko Sakkinen , Jason Gunthorpe , Vikas Gupta Cc: Thirupathaiah Annapureddy , Pavel Tatashin , =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= , op-tee@lists.trustedfirmware.org, linux-integrity@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 2/8] optee: Refuse to load the driver under the kdump kernel Date: Thu, 10 Jun 2021 16:09:07 -0500 Message-Id: <20210610210913.536081-3-tyhicks@linux.microsoft.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210610210913.536081-1-tyhicks@linux.microsoft.com> References: <20210610210913.536081-1-tyhicks@linux.microsoft.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Fix a hung task issue, seen when booting the kdump kernel, that is caused by all of the secure world threads being in a permanent suspended state: INFO: task swapper/0:1 blocked for more than 120 seconds. Not tainted 5.4.83 #1 "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. swapper/0 D 0 1 0 0x00000028 Call trace: __switch_to+0xc8/0x118 __schedule+0x2e0/0x700 schedule+0x38/0xb8 schedule_timeout+0x258/0x388 wait_for_completion+0x16c/0x4b8 optee_cq_wait_for_completion+0x28/0xa8 optee_disable_shm_cache+0xb8/0xf8 optee_probe+0x560/0x61c platform_drv_probe+0x58/0xa8 really_probe+0xe0/0x338 driver_probe_device+0x5c/0xf0 device_driver_attach+0x74/0x80 __driver_attach+0x64/0xe0 bus_for_each_dev+0x84/0xd8 driver_attach+0x30/0x40 bus_add_driver+0x188/0x1e8 driver_register+0x64/0x110 __platform_driver_register+0x54/0x60 optee_driver_init+0x20/0x28 do_one_initcall+0x54/0x24c kernel_init_freeable+0x1e8/0x2c0 kernel_init+0x18/0x118 ret_from_fork+0x10/0x18 The invoke_fn hook returned OPTEE_SMC_RETURN_ETHREAD_LIMIT, indicating that the secure world threads were all in a suspended state at the time of the kernel crash. This intermittently prevented the kdump kernel from booting, resulting in a failure to collect the kernel dump. Make kernel dump collection more reliable on systems utilizing OP-TEE by refusing to load the driver under the kdump kernel. Signed-off-by: Tyler Hicks --- drivers/tee/optee/core.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/tee/optee/core.c b/drivers/tee/optee/core.c index ddb8f9ecf307..5288cd767d82 100644 --- a/drivers/tee/optee/core.c +++ b/drivers/tee/optee/core.c @@ -6,6 +6,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #include +#include #include #include #include @@ -612,6 +613,16 @@ static int optee_probe(struct platform_device *pdev) u32 sec_caps; int rc; + /* + * The kernel may have crashed at the same time that all available + * secure world threads were suspended and we cannot reschedule the + * suspended threads without access to the crashed kernel's wait_queue. + * Therefore, we cannot reliably initialize the OP-TEE driver in the + * kdump kernel. + */ + if (is_kdump_kernel()) + return -ENODEV; + invoke_fn = get_invoke_func(&pdev->dev); if (IS_ERR(invoke_fn)) return PTR_ERR(invoke_fn); -- 2.25.1