From patchwork Tue Jun 24 02:13:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 899542 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 66532209F43 for ; Tue, 24 Jun 2025 02:14:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750731248; cv=none; b=A3TYfJYkdr6lM5/qZPZNRtARs2nFLFwMwQu3CYIVZRfwQpKkFp7VDGhG0zEslyYkN1nkK7hNJuodLIwk0WFrXJlxF/10a32jE+mnDDBEgEK1sl2UcYVOOuyTIOPfe/nxBSEBMxQA9MHCupeEd32Vn13Fjt+741Uv3aX6VRR7eSg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750731248; c=relaxed/simple; bh=0ZB/tSQJTgO/V9bw25UKkVrXHkwPDk176SMtQVZy7AQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ABwLzCinuzQFPfIyu4UGFTGhBhC17wdkQ5i1Qz4hT8GcxeCL8lOILAdWrIMbTnwYduBHS7f/3iAZYeRYJ5ENEVX/ma0pAmYTwPlBMD+QvLHK8II83itUzPzfXdrdYEZ39cexeNSVFSHhd9btkPixbyHwLbzvNZdI1CvME4yfXnk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=VKY3KZmf; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="VKY3KZmf" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55NKlr5r015686 for ; Tue, 24 Jun 2025 02:14:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= AmT60A9lLQ9BuGQyHbamKb2liQFhTaf9+85rsO1JS60=; b=VKY3KZmfKORozMEd g6Uevva+FWVhlZwL8faIPGLO2lXyItKoexwRQFwnbN+1+Wy04GxrcevaBolvZmLJ MWhmzWWMTo96c47/3DFEDBoL5rEqHedbyvg2SfC/QRzuNWwzy3qNUMUaBJyL0kPl V6p46X+WPf0QSxJGGt1ulHSpmjzhHW6wyLkyUqPqKaK8FO8D3cf3efQiEBNc3eF8 Pn3lH1eZpFLvT+QhR+JscCck40xIX6QDZ8KcsAEAcjGI4/JWqrnWDeF15chbcTcT xCsFFt6j09a7wE9c6Vz61+xCbYaw/nZ6RcWS+L4rL0ygUmgS3svMPCm3/7j2Pxlt IKcIUw== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 47f2rptpg2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 24 Jun 2025 02:14:05 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-7d40185a630so662696385a.2 for ; Mon, 23 Jun 2025 19:14:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750731244; x=1751336044; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AmT60A9lLQ9BuGQyHbamKb2liQFhTaf9+85rsO1JS60=; b=hJCzYRbKvEsxChHI/erhf/DHBZTyE7Jr9eCoviQUVPmIKkMurQHf0GAU5m78SctB4O KztNZuj1GJVvzbNOP1WC0GrfNHm2VqRVAY9czhnFx8iEoghD0G2q2BxHC5O0adsAWM2Q h2PeAJDbsrXShHJoQ9NXRT9ttbMKnkBpzgJqHthUHKhznb0yZIs1hBZeg/GXcLe9XY1U k8QroyIHZltFvsUii5qEUwsOWdXO1nnFSvfg3cLewde4y2s7WrvENNYOrthCiln6Gb5d v31o12hjnZ6GOuJM2r+YJc77TW89kQzz39vz/a5KibrCL4knZk5uozcCgS6AeyJC8Dux Y56Q== X-Forwarded-Encrypted: i=1; AJvYcCVTNY5+jHYyBNA1ZJcO69EsSTpefbv+j+6jOzAKdff+qbKtYv/xxT6kf02WIeXRZTpYMQ2BGD4ypjI=@vger.kernel.org X-Gm-Message-State: AOJu0YzH78rF7q8fCsMlNNx5fUzDKHW1jn1e8g1FKd0Mk50C8QeWQSvz 6HcqCinmlQTNtQFKjyBfXC37jS4oUjsRNJk30zDVkSmxMZRJAh9gzQ3E8tV23vxIDSaT+PlKh7j BuBPmomwWCf2hN/aCoEbHlnIrH4rZkjo28V8SUtWgfkiEq9Kq64hJ1L9mb0TQqUI= X-Gm-Gg: ASbGncsLfgxWWMIlHGC34D5rg+fHqkUMhl2FL8vEVvkj8Kc7kU28siZ3pfZYFe5pQZ2 wmKJrIlYBR7920pKe8FC40NSpcbHek9ANo5mUcPsbtpCEVncRrJaUJfThGuKVN2WC7uWiPvOMKi oBt/f5UrexGn+bweRKG1r1WU675+KdOZ5t+XFtEBJ+unWIPGjIEg4zIb7mU9Pi/LaltTcc8gpNl u6A4wtj3JZD4FSQBkjNxB0BZj20DMw3nBwVmpL0RiC9EHpjfxcLnxsidmkVNKLzvWHBvaSEbSN/ R+diKP/oCxF/7KDlEWpinG3QyRnIf7mMgUUdJTmCsBRSkTkZachsL89lOXot7KjBz0WSphnpvQL UZBsuO/hE4BS5LEF+/siFmyABSbh0gMyUuLc= X-Received: by 2002:a05:620a:4392:b0:7c5:5a51:d2d1 with SMTP id af79cd13be357-7d3f995f1c7mr2572885585a.55.1750731244542; Mon, 23 Jun 2025 19:14:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFYIL4+l3frydW5f5l5oqZb7/2v7MXWN/9Lgrqu/VuEHi7B++dwsM5L4Gh5qOtGXS/DiuKkOg== X-Received: by 2002:a05:620a:4392:b0:7c5:5a51:d2d1 with SMTP id af79cd13be357-7d3f995f1c7mr2572882785a.55.1750731244164; Mon, 23 Jun 2025 19:14:04 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553e41446e2sm1637764e87.32.2025.06.23.19.14.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 19:14:03 -0700 (PDT) From: Dmitry Baryshkov Date: Tue, 24 Jun 2025 05:13:53 +0300 Subject: [PATCH v3 2/8] firmware: qcom: scm: allow specifying quirks for QSEECOM implementations Precedence: bulk X-Mailing-List: linux-efi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250624-more-qseecom-v3-2-95205cd88cc2@oss.qualcomm.com> References: <20250624-more-qseecom-v3-0-95205cd88cc2@oss.qualcomm.com> In-Reply-To: <20250624-more-qseecom-v3-0-95205cd88cc2@oss.qualcomm.com> To: Bjorn Andersson , Maximilian Luz , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Ard Biesheuvel , Konrad Dybcio Cc: Johan Hovold , Steev Klimaszewski , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-efi@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4148; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=0ZB/tSQJTgO/V9bw25UKkVrXHkwPDk176SMtQVZy7AQ=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoWgnlffFPCByp4RKefp3ZNXphmsBnCnVx4XS1R V5Q1j07lkCJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaFoJ5QAKCRCLPIo+Aiko 1aeYCACWko1A2fakj7OHXikH01sxkD5jypkMNfkD+er9snZS8sOBHOyRBA5xSXFrDKYldT1vpES oGdMf5oDThzf9XSVunYVT0tJ4KdkuEmnAznWz9CTByqnEIStF0BB+nfqQYtvg7+GCrbTdX9x4gZ 6q2ialmgnWIRTX9Yf2eLw/vE0kOemOH69Ip7ABWh2b80cmazsNbfqQ+Qke3v8ZI7M1M2QVBK35i EnVVYASvUZ120xd0DrxuJ4mQJN7sLgQ5mpa8oZrIXltYqU5ovk2Omwjegf/+QF9Oq3Yjx7LFVws pe14dBhueJpOTLsPi1XNk9D1DFzknFvgWfE+6LtXAWhZ2f2V X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=NdDm13D4 c=1 sm=1 tr=0 ts=685a09ed cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6IFa9wvqVegA:10 a=EUspDBNiAAAA:8 a=wTlJEWXFZO-q-0qxHBMA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjI0MDAxNyBTYWx0ZWRfXxAFwH0h1T5XW 02VmTqeIJjQQl6PUO00ocIsFcWp39MNnLM1LlbMf4dfPTj/mdSjbicVgwcH/cbFLKTTEAMD/Py6 paI9WtJSam7Ts/UNc9TLLR8NshQJHt22d+aGdEJpHuV9dGOSMKLxOyu/Xxd+5uNOrhTI5G8np3y 8fP7djVdWBMSiqgMe07zNsD8ZfJjPiA0DQwb6GTudNuzgnGwWTvPiUnn8l38xwiB2ZXbaxNtwTU ocudDzNGS/YBlXpsCLvDpLwYlf2rPeb3v/P6gHDlXJRO3BKZxE5ELPpwS6aNr4IwvJPponJjO6f 5Joh946q8Dwf462Vmk3p+B8DxfaVKKngIbdHWjUaBmt6IO+1NeGAsEFhxBeBbapThWQm4fQtuLu yATGRAoc2QTTjIRxvuR+SfwXqpy66fFCeZKMn5kX6eIr50pXUpRhN1CRHf41V78NhEfEFc6I X-Proofpoint-ORIG-GUID: G9VYRizl6nc-HfMyKrWDn86IsWwqZ32E X-Proofpoint-GUID: G9VYRizl6nc-HfMyKrWDn86IsWwqZ32E X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-24_01,2025-06-23_07,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 mlxscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 suspectscore=0 mlxlogscore=999 adultscore=0 clxscore=1011 impostorscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506240017 Some of QSEECOM implementations might need additional quirks (e.g. some of the platforms don't (yet) support read-write UEFI variables access). Pass the quirks to the QSEECOM driver and down to individual app drivers. Signed-off-by: Dmitry Baryshkov --- drivers/firmware/qcom/qcom_qseecom.c | 6 +++++- drivers/firmware/qcom/qcom_scm.c | 28 ++++++++++++++-------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/drivers/firmware/qcom/qcom_qseecom.c b/drivers/firmware/qcom/qcom_qseecom.c index 731e6d5719f9e3e9e698f5de0117540f51ebab63..aab0d61f0420c4f3d6c1a73e384195b9513f3ef9 100644 --- a/drivers/firmware/qcom/qcom_qseecom.c +++ b/drivers/firmware/qcom/qcom_qseecom.c @@ -36,6 +36,7 @@ static void qseecom_client_remove(void *data) } static int qseecom_client_register(struct platform_device *qseecom_dev, + void *data, const struct qseecom_app_desc *desc) { struct qseecom_client *client; @@ -56,6 +57,7 @@ static int qseecom_client_register(struct platform_device *qseecom_dev, client->aux_dev.name = desc->dev_name; client->aux_dev.dev.parent = &qseecom_dev->dev; + client->aux_dev.dev.platform_data = data; client->aux_dev.dev.release = qseecom_client_release; client->app_id = app_id; @@ -89,12 +91,14 @@ static const struct qseecom_app_desc qcom_qseecom_apps[] = { static int qcom_qseecom_probe(struct platform_device *qseecom_dev) { + void *data = dev_get_platdata(&qseecom_dev->dev); int ret; int i; /* Set up client devices for each base application */ for (i = 0; i < ARRAY_SIZE(qcom_qseecom_apps); i++) { - ret = qseecom_client_register(qseecom_dev, &qcom_qseecom_apps[i]); + ret = qseecom_client_register(qseecom_dev, data, + &qcom_qseecom_apps[i]); if (ret) return ret; } diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c index f63b716be5b027550ae3a987e784f0814ea6d678..fc2ed02dbd30b389b5058f5cac70c184df7ca873 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -2008,10 +2008,10 @@ static const struct of_device_id qcom_scm_qseecom_allowlist[] __maybe_unused = { { } }; -static bool qcom_scm_qseecom_machine_is_allowed(void) +static bool qcom_scm_qseecom_machine_is_allowed(unsigned long *quirks) { + const struct of_device_id *match; struct device_node *np; - bool match; np = of_find_node_by_path("/"); if (!np) @@ -2020,6 +2020,11 @@ static bool qcom_scm_qseecom_machine_is_allowed(void) match = of_match_node(qcom_scm_qseecom_allowlist, np); of_node_put(np); + if (match && match->data) + *quirks = *(unsigned long *)(match->data); + else + *quirks = 0; + return match; } @@ -2034,6 +2039,7 @@ static void qcom_scm_qseecom_free(void *data) static int qcom_scm_qseecom_init(struct qcom_scm *scm) { struct platform_device *qseecom_dev; + unsigned long quirks; u32 version; int ret; @@ -2054,7 +2060,7 @@ static int qcom_scm_qseecom_init(struct qcom_scm *scm) dev_info(scm->dev, "qseecom: found qseecom with version 0x%x\n", version); - if (!qcom_scm_qseecom_machine_is_allowed()) { + if (!qcom_scm_qseecom_machine_is_allowed(&quirks)) { dev_info(scm->dev, "qseecom: untested machine, skipping\n"); return 0; } @@ -2063,17 +2069,11 @@ static int qcom_scm_qseecom_init(struct qcom_scm *scm) * Set up QSEECOM interface device. All application clients will be * set up and managed by the corresponding driver for it. */ - qseecom_dev = platform_device_alloc("qcom_qseecom", -1); - if (!qseecom_dev) - return -ENOMEM; - - qseecom_dev->dev.parent = scm->dev; - - ret = platform_device_add(qseecom_dev); - if (ret) { - platform_device_put(qseecom_dev); - return ret; - } + qseecom_dev = platform_device_register_data(scm->dev, + "qcom_qseecom", -1, + &quirks, sizeof(quirks)); + if (IS_ERR(qseecom_dev)) + return PTR_ERR(qseecom_dev); return devm_add_action_or_reset(scm->dev, qcom_scm_qseecom_free, qseecom_dev); } From patchwork Tue Jun 24 02:13:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 899541 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B9568219301 for ; Tue, 24 Jun 2025 02:14:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750731253; cv=none; b=XmATRMzYj/3MeCbCz+daws5VfOibgP5hS+UJzUHYkMF27sTJdP1DbSyaS6ti1bN1PmHwYz7xg17Wspx+Dp+w6SdWBJfo0OmuqPqLpJE2nJb2gT9TGmXwFQka6fCZUk2biD+OTXkLmHJJSWnZNWnGI79MAdlgXBejBCql4uWDLOk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750731253; c=relaxed/simple; bh=v3Son85QFIExU23XS9BqES7WnyoRqHF3ETTCsPhCxq4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CXxmHY+LYmCjrxm0C3nyB0FQ0P/UthztwgwyjUJDNzbFrgnDhbH4kSsxvOO2UtNnh/7jBNExwGOKBaFPaGtWnd9STZJOw8WAHg89SnYE+QOrnieJxWqxEcixD20TkgUKAsExRmButPlG61MuJ/rv6uoaa9gHUl2U+Dtksk+JZxs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=L+OJCMA2; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="L+OJCMA2" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55NGeAM3021706 for ; Tue, 24 Jun 2025 02:14:11 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= i5QrZxszEjgpMGIfh5fARAtG0+hpGYQPrZxwwktP520=; b=L+OJCMA2bzzxfTu/ T2KN4PKx4LDls5LRt0MDzBtb9r12kbNertfiuH0viP/9SRgdjA8ThK0GmsRLrAVe 5sZMWHdatnTFxU5icLoFxIPWVOWrJB1ndZIoG3aIlo0XzdK/EWt1LC4/7HbtmBWU jLwvpLdAYodPVa/WQTu0SMvjVTLA2ai6Mo/RRQjsJbeEXQgaz1mIRq93oxAUnGO8 XN/JgF5s9UGqvYwqHt2woHfxL5uK9ngs2a0hN8mfbiLymyI6caO3l9V+HpQ3yqxa hHPtJ9wnHfmuZecBTt/qgXBDpAx9yOqXkfERbbdlVLP9Ape4W/oiIO5/j37bUAVq bBfJow== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 47f2rptpgh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 24 Jun 2025 02:14:10 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-7d22790afd2so634385985a.2 for ; Mon, 23 Jun 2025 19:14:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750731250; x=1751336050; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=i5QrZxszEjgpMGIfh5fARAtG0+hpGYQPrZxwwktP520=; b=EjFTU4I1PojmAmxIrmj+2ujoGZP/J6rDyZ3/koMcri5QOMMpU+0/RKzS9Er/7lc9Iw W8F/CD+T09V23LbFNYxmvazWQcr7bXYvivAaFU6Jc85B1DjNlyja9UaYp7DURxM527kW +3sbCi9HjuAFc2NErtjxG5RdQKhSkridH1qqL0S6/NsnKtjIaqXfrrpzzRqG0YqqEaTC u/Vz5iXIe2bifj3E9x0DNnirOGHYwrKiXKnOLW0eN/DAUSsIvFH3JcCw6oTcq53QW996 wdNZemLe2Mvom/fjUFtt6heQhxQZI20qlBqSIi+OP/KiQoIh3i93Thu/1LH3rKD4OjlU NnYg== X-Forwarded-Encrypted: i=1; AJvYcCU7c74glMysJsJCUnG6QfEF+ijuzMkts6B9aUBs3j8Kn05IXbRiTTmZB8uWaR37fW2WsIXF/kSwhug=@vger.kernel.org X-Gm-Message-State: AOJu0Yw//AHcg5fpdOaqiTWJ+zwE/3pam4qitOicKz8iecunqs/ytIxc mbkOrFIxwiOmdVXoid7bQJexXV8Op/nvNSsi49JLOBZFz1ITP7M0B1ZFkzW+Xz4SdACyyYmXjZO SR6JKV+gyMlEUZbmnbrMO7ouZ0FYzE6X/U7BZeX+LmhscaQDiQ3exHyjylkTkWDc= X-Gm-Gg: ASbGnctI+1SXz9h3ij6Y5rUk/5IVR9BBz6wRL293b78GCbMZ+U0yNJOE1itk36jIFUS DEDzEX8h70Z10/qOV6Z3NyWLWMsx8TTZszK/eGPrrSeDRhQtgLmuDU8Ci2rvqO9nxyScQ28SswB FSgZb+k923ds+ZZhYUJq58hTdIf4LFAIdspZ8u1vHQbsgtZrPf0auCeCO7Xo6qkpgvkJ28elkiL BJvMxBMAGXtrnrgSM89YXq98aSJRcgujxaWDx6C/EVGUGUD7i8Z/FLxcbt+QaRaS1O3a+ofVCxB 5+pb1suINVdl0dfg2krOXG+S7110lsyvoXON4wYf2esyipTwtXZnDJyk8KzIRGfYkBhmtyDqOE1 I3xcAyaVhf/GhXZPiE3YXpLMKuJdwdtsOD2M= X-Received: by 2002:a05:620a:1a86:b0:7d3:e710:1d3 with SMTP id af79cd13be357-7d3f98c3369mr2225928585a.7.1750731249959; Mon, 23 Jun 2025 19:14:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEKmXoiRtPNEWmHEBmeQERxK7vDC1NSMXXW/JftGSNVpwOb7nUvzFKFHDL4r99WBj53u5KU3A== X-Received: by 2002:a05:620a:1a86:b0:7d3:e710:1d3 with SMTP id af79cd13be357-7d3f98c3369mr2225925485a.7.1750731249530; Mon, 23 Jun 2025 19:14:09 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553e41446e2sm1637764e87.32.2025.06.23.19.14.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 19:14:07 -0700 (PDT) From: Dmitry Baryshkov Date: Tue, 24 Jun 2025 05:13:55 +0300 Subject: [PATCH v3 4/8] firmware: qcom: enable QSEECOM on Lenovo Yoga C630 Precedence: bulk X-Mailing-List: linux-efi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250624-more-qseecom-v3-4-95205cd88cc2@oss.qualcomm.com> References: <20250624-more-qseecom-v3-0-95205cd88cc2@oss.qualcomm.com> In-Reply-To: <20250624-more-qseecom-v3-0-95205cd88cc2@oss.qualcomm.com> To: Bjorn Andersson , Maximilian Luz , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Ard Biesheuvel , Konrad Dybcio Cc: Johan Hovold , Steev Klimaszewski , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-efi@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1983; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=v3Son85QFIExU23XS9BqES7WnyoRqHF3ETTCsPhCxq4=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoWgnm3R9FHErq2BcU8gbUjr0GQ+28hQ1zTQF2F 7xwmaXb9xyJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaFoJ5gAKCRCLPIo+Aiko 1eKrB/94cDUgCnfyhIrD3o/4vYyVA6SWxvaGs1Y0Qpy5Nel7viljJpaPK9rV2HF0DYE/Hk5yHjP E6ssnHmeaqqYEN9y2L0MkmW58T5Zy2PP9V9lFhK5M1t9uHOd9JuNGgb7bK7R+5tDpiI07Vf6j3y qg1JZ/riJqhUQkm1m/JUo9jGbNGd0cWlpOXOyp3LLNd2g6DrAtyGjb/wtEeTyizJ33y3E0YfLYA v+MNANaqIwSI9pj1uANbqb9zvgUFyCS1pMrSnkxyvWD4U/JKBzHOaYVdBL4rku9ynEOL3gkBeAj 7Fx/tf0R8J7cPqTv0qTuBwWKUaVPY4RnRJj5Pisaspm/7p1e X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=NdDm13D4 c=1 sm=1 tr=0 ts=685a09f2 cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6IFa9wvqVegA:10 a=EUspDBNiAAAA:8 a=WOWBbpsv7UBti09GJWYA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjI0MDAxNyBTYWx0ZWRfX8QlLVS1XNfU+ NiDF/QnkcwXHGvX7ATYZ26ZxcZgH045J9u+JPsFaKFvGReKw1jUvFYiakjZNNuHcrfgPkSn9Et0 aHvx6MT6V7cXlxMqEsXZGBIBrrlHLVAuN6gIfyAoiTumnrvP5Fq8KrQlMSSd7eQeCHrNOxexuWH QfFEbtot3QXj3yCP/jWCKomWSFHpkRRcygGeQYZxNKpLk0nqUWB7XMiY2JqQIlbIbDSDtEY4BLf 9W5fJBL5t/oTcCF4KTn01c8b9Cfo+8d5V7rfyKsQA01OehaqknLCu2TEpcl1BADPLNd3FUJtYC1 XngOnVA4c7qGToe2UAlDWXYtPrfikMUxdVCK6iv07FMNsL1uz8oEBYL7/WSYtsTlobjkRr6foAY ZZpwzcovbxeO3iO6LVw/IqsQD/Dt7taIdIiAOHaPynnF55koZZlsxr+dmD+9fdFAF4wqZpq1 X-Proofpoint-ORIG-GUID: Vg13df9KzXClN7qIsoh_TWO28yXI6lz- X-Proofpoint-GUID: Vg13df9KzXClN7qIsoh_TWO28yXI6lz- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-24_01,2025-06-23_07,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 mlxscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 suspectscore=0 mlxlogscore=999 adultscore=0 clxscore=1011 impostorscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506240017 QSEECOM driver end UEFI vars access works on the Lenovo Yoga C630. This platform has only one storage (UFS) shared between Linux and SecureOS world, uefisecapp can not update variables directly. It requires some additional steps in order to update variables, which are not yet reverse engineered. Enable the QSEECOM device on that laptop and set up a quirk, making UEFI vars read-only. Reviewed-by: Konrad Dybcio Signed-off-by: Dmitry Baryshkov --- drivers/firmware/qcom/qcom_scm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c index fc2ed02dbd30b389b5058f5cac70c184df7ca873..dbb77c3f69ddaa931e7faa73911207a83634bda1 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -1980,6 +1981,8 @@ int qcom_scm_qseecom_app_send(u32 app_id, void *req, size_t req_size, } EXPORT_SYMBOL_GPL(qcom_scm_qseecom_app_send); +static unsigned long qcom_qseecom_ro_uefi = QCOM_QSEECOM_QUIRK_RO_UEFIVARS; + /* * We do not yet support re-entrant calls via the qseecom interface. To prevent + any potential issues with this, only allow validated machines for now. @@ -1995,6 +1998,7 @@ static const struct of_device_id qcom_scm_qseecom_allowlist[] __maybe_unused = { { .compatible = "lenovo,flex-5g" }, { .compatible = "lenovo,thinkpad-t14s" }, { .compatible = "lenovo,thinkpad-x13s", }, + { .compatible = "lenovo,yoga-c630", .data = &qcom_qseecom_ro_uefi, }, { .compatible = "lenovo,yoga-slim7x" }, { .compatible = "microsoft,arcata", }, { .compatible = "microsoft,blackrock" }, From patchwork Tue Jun 24 02:13:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 899539 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0620124468D for ; Tue, 24 Jun 2025 02:14:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750731263; cv=none; b=mvnmeOhTML3pLVTzHbSdjFI+n6qejp8XRWJT6RywId9iYDfqPH7L860eChk7X89bwntegB6hNu7p5C6oQi/X/VNZZSFZDO33Hpp7RTlYX/Wu4VCAtEeOWdDn9zjqATW1YzjmaT8E2xBGeFK44+FvrIhl41E/B3ujaxj8cHN6nHM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750731263; c=relaxed/simple; bh=s2o+RnAnwuuTYdNz0c1fk/UXp0JDkRHvl3NhwSnxORg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V5MR3fFBB+aevrK925BXBqu6cJO3w5ib21I9WwEd3sHisyMLsoxRvIneSQUZAd1BnDa4muUMf4/UmUu5hExkcO8d2oaBs+cWwy+t3strZ4AB8jP6/gwWWBERgP7gVa8uMJMbupdl39vFNYZrsJGmAblfwyvCISilFqV71BZArKA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=mTbTcNjo; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="mTbTcNjo" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55NDRrEK017016 for ; Tue, 24 Jun 2025 02:14:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= rXsS7jxuGefUn2n4a2PcfVZg4ooOKFqRyiTGh+plE6Q=; b=mTbTcNjoFIMpupY3 M9nf6M0iO7jrbBzOGCTzmv3I2kNdXddeHZRe0dd0S5f+z8qnJv1CHG0J8AoxAZk7 IOrfelL6P9VYacCnzrgEJgoXHNMv60fcBq+41/cSO47ZY6TS8TcW/FkmPBPfEErX kVaX4UR9oF/IDnupDcV3/1+gtp+UheDaCCwSjESMwRiDOY2DrEJHP6R8r4wMgNrw N+lqT1YympUowDsgf7W9iGveMmU5bISNygHLS0U9i9vV5K7nN4e4j1zXhXUSNgEn 3tvuiPf8En5fSQZmNmtewgJaiGNpuqB8HZU/eaMW/NOaiXxSn17UROsd53gXvhFs M7DviA== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 47f7ttspwq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 24 Jun 2025 02:14:20 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-7c5e2872e57so745975985a.0 for ; Mon, 23 Jun 2025 19:14:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750731260; x=1751336060; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rXsS7jxuGefUn2n4a2PcfVZg4ooOKFqRyiTGh+plE6Q=; b=hAsMPoQMe7sQfVUKTmeD9R/pdUHsglZo1rw0Aw/bOmrSfb3Zx+z3zRMgUVkBSCCRAa 0p9GYTWnDU9mJZPtuaOTNTECDmMFsJDGjH1kmQkZN5Vgv/5Al6sDb96yaG2EwfGZeEp+ NC/GGfeBBi1P0XwEEBhjq1XEPUoV7Kpfoel4AbjVNydD+rhT8yS6nxk8PFO6Y0sVxaxV zJYc4RXTTzBtUns4rZ6U148f6r3JHHAIZkBX4zCLfq/VAVkhfJXwGYkBFKqBHgrrxtmZ 0I7HAtuWZyEFU/1FWmSdvMgFUgJZzskGuGXFLjEr5vppTpUAK5rc5EgTeb8LRbuQu0z6 jNkA== X-Forwarded-Encrypted: i=1; AJvYcCUR2SHQS4dMFMZ8Sk/FJ6Y225mU1DqWQ+eIwvSVH3BYu4NPx7u6+fEq9PRcddGY4lib0Ek0rOUIT48=@vger.kernel.org X-Gm-Message-State: AOJu0YwpzOvmizuwjdtuPLPjjrlGDmnkHNcm8lbbPwWXWpR9BN/sGFwe 3HV0zJ9IoToO5pr4mKtHoV2fPJ6XP0WL7P4GVUfu6o2/ufgokhpKNI5QXsdtSq3QJ4dw1kwSmrn XyMI4sSIqX98KOqiiZBsifDN10L6BeHBxTzyFNSC4159hDj1WbwJR4OVeEegqWzM= X-Gm-Gg: ASbGncsgwlYNdTimr9QqjGGab+pdRIQJzRWWbX7tYTlDphsaMFmf3zpZ6mQIHyfobYP xXRO+2KqtoULP1/JZiIYJeLa0CEMAMK+naGdTRAC0cBKOY5FB2gjqw16XynopyuhzefKVwumz+W 1J3ejEzAa4e8r8NAsmlZ1BCOmUani3V+AyYaJnO0gAnG5cvpBL83yqwdPAu1JSDgkKDqj+bvwkD zlcWuUvp+S/yzL9Gy/VdDmiVLkpK6mYoaJvuZVfeASHMyasbevPJXTn2rewO7djMSPD52yzmnzg i3VzZso6zskmaPOB8OTCHsH23lkaQ98dQDJBioKdj0aMlYva1OCqsQTxlUlPdibcD17I52wh14G nykwxv/dviYBkpQtPlBN6aIZ1BZpgLZheET4= X-Received: by 2002:a05:620a:1922:b0:7cd:331d:bb3e with SMTP id af79cd13be357-7d3f9935e7emr2022904385a.32.1750731254912; Mon, 23 Jun 2025 19:14:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHPRQEcxIl/1tKf9CY1/kqMs19qtzRY7gdh2XwyltdEkmnKpY5wXHxxDtB4ZK5neoLM+qrbsg== X-Received: by 2002:a05:620a:1922:b0:7cd:331d:bb3e with SMTP id af79cd13be357-7d3f9935e7emr2022901985a.32.1750731254441; Mon, 23 Jun 2025 19:14:14 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553e41446e2sm1637764e87.32.2025.06.23.19.14.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 19:14:12 -0700 (PDT) From: Dmitry Baryshkov Date: Tue, 24 Jun 2025 05:13:57 +0300 Subject: [PATCH v3 6/8] firmware: qcom: scm: add modparam to control QSEECOM enablement Precedence: bulk X-Mailing-List: linux-efi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250624-more-qseecom-v3-6-95205cd88cc2@oss.qualcomm.com> References: <20250624-more-qseecom-v3-0-95205cd88cc2@oss.qualcomm.com> In-Reply-To: <20250624-more-qseecom-v3-0-95205cd88cc2@oss.qualcomm.com> To: Bjorn Andersson , Maximilian Luz , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Ard Biesheuvel , Konrad Dybcio Cc: Johan Hovold , Steev Klimaszewski , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-efi@vger.kernel.org, Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3235; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=l/2vDz7zeLnp6OwntquJZV6YAtUYQ1dSv5z/W2j9Xfw=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ0YU57MOZyPTF/dlmU/ODlc/cNRYcel5y538c/YknT9vr KZ4qP5cJ6MxCwMjF4OsmCKLT0HL1JhNyWEfdkythxnEygQyhYGLUwAmMp+N/Z+NbJ3txjX7GioD /sdFlzMbu/ieiEotK///rsihPOJijY/1k4+bL22pOzPdPkiM629qs5+N0VG7X2tSfUulSiPflqZ l7tml6dJ9Pn+Hw/IeuSOn+H79nNe0ZEbNWen5n+/GKUcEJi0X/JI+J65Ecb4ot0yh4AH7om8MtU FLD0yNbcuQ3OVw/OSG8ss3Dbse90spqpXvPqpZsJl54b7bTpXSonahWyZ9Yr7Tk9fNl/M8vU1a4 TVzTVb+f6bLM9Y3bUyV1I3eU51z1b/0v873JzHz/t/VSBSU2NTxYbXVtB/3/qlMaS1hWcYgv7lb Uu6nROf8g5y5jA+N2ZSKU/WvfTy1k7m34nP1nQsHFNIcAQ== X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=QINoRhLL c=1 sm=1 tr=0 ts=685a09fc cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6IFa9wvqVegA:10 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=JMKUWE_9wimnfyHsXasA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: a9tWinRbgYBJJvGDOS7oipoFDtF8ZkjC X-Proofpoint-GUID: a9tWinRbgYBJJvGDOS7oipoFDtF8ZkjC X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjI0MDAxNiBTYWx0ZWRfX8Bl6jxJngM21 PKeHbUtA4sTczY3OQ41S8isK60jY4BICfwOrAzQqwb5WYM2iLbsdh0yx+Sm5KtRwOIo+AdQSiYn EBV39WRzfHFaozRDe2oiDz9pv0t3RPN1kHIP0VhGI8YC7HPwdouzsrAMGUuoTD7/lnWJHjlYOOs ljshrNIqw5TPmSJdUX80U074p1Cjxk2k0aBNnQRAs3oPKdj6gEJvSHjCPDWo91r+kVPl5rV0QK0 rD0O9KIehKPl5z+BxYcasuRPYJAMU2nysZEnAFFCRXHk8HParqJDDKxpqiZ3nvNB1czENHT7u+M cmVjQYBtpJAaL3V8DooUObs3B00b04vVxD3MlCh2aI36BK/Ehu9XzqT6fkmK5XivWvYaHjBfKOn YifDHoJ2eC9YfiOaEhA/4wP0afMSi7fmOYpkhVP+/tn+jB/tI7oFD6eRh2eNVP3mtWhKQLTF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-24_01,2025-06-23_07,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 priorityscore=1501 malwarescore=0 adultscore=0 mlxscore=0 clxscore=1015 mlxlogscore=999 bulkscore=0 suspectscore=0 phishscore=0 impostorscore=0 lowpriorityscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506240016 From: Dmitry Baryshkov In preparation to enabling QSEECOM for the platforms rather than individual machines provide a mechanism for the user to override default selection. Allow users to use qcom_scm.qseecom modparam. Setting it to 'force' will enable QSEECOM even if it disabled or not handled by the allowlist. Setting it to 'off' will forcibly disable the QSEECOM interface, allowing incompatible machines to function. Setting it to 'roefivars' will enable the QSEECOM interface, making UEFI variables read-only. All other values mean 'auto', trusting the allowlist in the module. Signed-off-by: Dmitry Baryshkov Signed-off-by: Dmitry Baryshkov --- drivers/firmware/qcom/qcom_scm.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c index 27ef2497089e11b5a902d949de2e16b7443a2ca4..5bf59eba2a863ba16e59df7fa2de1c50b0a218d0 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -1983,9 +1983,14 @@ EXPORT_SYMBOL_GPL(qcom_scm_qseecom_app_send); static unsigned long qcom_qseecom_ro_uefi = QCOM_QSEECOM_QUIRK_RO_UEFIVARS; +static char *qseecom = "auto"; +MODULE_PARM_DESC(qseecom, "Enable QSEECOM interface (force | roefivars | off | auto)"); +module_param(qseecom, charp, 0); + /* * We do not yet support re-entrant calls via the qseecom interface. To prevent - + any potential issues with this, only allow validated machines for now. + * any potential issues with this, only allow validated machines for now. Users + * still can manually enable or disable it via the qcom_scm.qseecom modparam. */ static const struct of_device_id qcom_scm_qseecom_allowlist[] __maybe_unused = { { .compatible = "asus,vivobook-s15" }, @@ -2013,11 +2018,27 @@ static const struct of_device_id qcom_scm_qseecom_allowlist[] __maybe_unused = { { } }; -static bool qcom_scm_qseecom_machine_is_allowed(unsigned long *quirks) +static bool qcom_scm_qseecom_machine_is_allowed(struct device *scm_dev, + unsigned long *quirks) { const struct of_device_id *match; struct device_node *np; + if (!strcmp(qseecom, "off")) { + dev_info(scm_dev, "qseecom: disabled by modparam\n"); + return false; + } else if (!strcmp(qseecom, "force")) { + dev_info(scm_dev, "qseecom: forcibly enabled\n"); + *quirks = 0; + return true; + } else if (!strcmp(qseecom, "roefivars")) { + dev_info(scm_dev, "qseecom: enabling with R/O UEFI variables\n"); + *quirks = QCOM_QSEECOM_QUIRK_RO_UEFIVARS; + return true; + } else if (strcmp(qseecom, "auto")) { + dev_warn(scm_dev, "qseecom: invalid value for the modparam, ignoring\n"); + } + np = of_find_node_by_path("/"); if (!np) return false; @@ -2065,7 +2086,7 @@ static int qcom_scm_qseecom_init(struct qcom_scm *scm) dev_info(scm->dev, "qseecom: found qseecom with version 0x%x\n", version); - if (!qcom_scm_qseecom_machine_is_allowed(&quirks)) { + if (!qcom_scm_qseecom_machine_is_allowed(scm->dev, &quirks)) { dev_info(scm->dev, "qseecom: untested machine, skipping\n"); return 0; } From patchwork Tue Jun 24 02:13:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 899540 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D731B23BCF0 for ; Tue, 24 Jun 2025 02:14:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750731260; cv=none; b=WBLTMeG7ttmgBkWy2C7AhngIx9lH3/xwVJpEKecI2Agl5BbV9AnDt0tTf5EhxKeoFeAn58PJzMreL6PMx/55wleue3tpNZgRcm1KgbbtObdCvIf54Jlb1xPZk3u3GcsoNWC7+mBNNVwN1uecF+W0M+XlI4sOZo/vlt4tmzq7iiw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750731260; c=relaxed/simple; bh=/NIXeaLJW7ceni+zMV2gP7uWevC/GndSzaHOxcNpLVY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AqZuV7zYAYcRS31smaKAmdhPHrOaqJzkNbt3zX+RPWgSGODiuwaxI5Rv5tov3xM4GW9EU7n1E4ulHHest+OHzJx+uWJxanxW3Wz5E67pNayFNReF4LfOEgcxFfxWL3rdQLLgURmReK/0d6brhEU1C2QeRRRo81P47tGc4gBmPhA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Rnr5ft7I; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Rnr5ft7I" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55NKl7bb014579 for ; Tue, 24 Jun 2025 02:14:17 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= KSsmFRYtKsy8tt0rPP75MYEWkXOKJnB/cMl7H48cmto=; b=Rnr5ft7IFX0ovfPY s3511GrfBjxXoVRYpTCCC70sOz7k3eNN31iMx9MVVZVw0VdQkYmfrVY5pJ5wrLkr D0CRx9pBsJU8ESC6TYN8sFayB2q5+9TSPZiJZpDp0+/f2jVHU2rXvvk2m9DctmNH egBkxVUsK+9o5zrJnFM1oCJVDjuXUQXAlL0Ab/VYQvvWHFVfp1ES5zoxhPbdQzhf R6z/95Lk6MgdB/qXRUQIjd0GS+v8imIxDBwVHYD+PhkFqTMzXP+xnjLooN7TYWxU ajKNmDpD2hUqCj8OqC7Jy4vdi/xLn0d8IOEVdGNlIxJ75p2+U7ZRqngpjNj9x0tk p0OCxg== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 47f2rptph2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 24 Jun 2025 02:14:17 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-7d38fe2eff2so818215585a.2 for ; Mon, 23 Jun 2025 19:14:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750731257; x=1751336057; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KSsmFRYtKsy8tt0rPP75MYEWkXOKJnB/cMl7H48cmto=; b=ti1zzQZdW61KOJWz+5RL0OuK8Tt5WKjvOqtaysDeAUDFxTnj10O/D6OnEtquhVG8oT roEon2po6Vf8Cv3VfafwD3Ka/L3GtGc9XqRetENbek06oa1saZEEC4w1bOTPkKKmzTIt 2o6jC28Mc9iUvKMYyxFowyVlw2KiVOzyzJKqL5Fg8kBAixU++gjPzDxPSNFl/meGOrxL xoNQV2/CcuTMg19XKYUX4xR3zmoI/Mrd7h8ojZRme8aT9UOolWu+C3NL+Fhjk/RTWuVw VW9kdLn1WO18mz0OXsl70+bLd2awTsHxCG+Pb/TzdYlY9sxs+fL2gGEqBAWAtCbxaiOo z4KA== X-Forwarded-Encrypted: i=1; AJvYcCWgcoZ8CbVqLbx7Bd79E9HSVXZccnwxY5lfunf2wMpi+T1ctJhTA9zxwQy2fUCYsg8vHnxsK0Rsogs=@vger.kernel.org X-Gm-Message-State: AOJu0YyF15cJsDCj9QX7UsVZH/W3Vlxyhh/aNVMjnJE4fkA4tkG2IXsL 2EyN82EENx7Yim2xPOTdzdGaHW+asUe4XBaZdfQnuk5HHkY7qlGSGlec1fwttOlecLhgZ/HkY2L PszV/9JVRQlvU4pWLRETivylkPEwtrdjbBPukb1egXpH2fMoz//0YHljQX17Lm9U= X-Gm-Gg: ASbGncvhXTg35PdqtPlfMtJltCp0hL/kdObx5h7P+hQ75ZgSsYDpySI4iz2fywmS44Q 10hVxkRWiPnJkoW92f8JzN10GrHC2hqU1SEsdluN2CcoCYqd0+ShJ+V79k5VQIl6hkpO+ItNA4B 3GhWH/3hGFZsEGlVwm0AAVhQr5NYY60JTMmlK7hABQJEyDP2zutqVracC8X7Py0VRqZgRI9RpNO hk0iFt3gD+gzSUwo1b+ajoY1kLYlbfNqgT5KOZKjrwPsAmwHkAXstiYlKX/+hYyDPO59Z9HzH50 DvOzUfLXTN5Dthptj9IvUg6UD7HLnLDD6K0Fr675OTMgsadYXSdQnQVRU/zXyTAQrTHTQIdCmeg 20ukiDBYOpQmmOfliR569mlQuth1qwAmmeA4= X-Received: by 2002:a05:620a:3184:b0:7d3:9108:2f5e with SMTP id af79cd13be357-7d3f9955eb1mr2175621885a.58.1750731256669; Mon, 23 Jun 2025 19:14:16 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEEvPGKzqq/ERq9Ab3y+s9Q0WOIWW1WDVFqtOrmONNECLpS3Se/wffNwM0S269x7P5cnh7UfQ== X-Received: by 2002:a05:620a:3184:b0:7d3:9108:2f5e with SMTP id af79cd13be357-7d3f9955eb1mr2175619385a.58.1750731256204; Mon, 23 Jun 2025 19:14:16 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553e41446e2sm1637764e87.32.2025.06.23.19.14.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 19:14:14 -0700 (PDT) From: Dmitry Baryshkov Date: Tue, 24 Jun 2025 05:13:58 +0300 Subject: [PATCH v3 7/8] firmware: qcom: scm: rework QSEECOM allowlist Precedence: bulk X-Mailing-List: linux-efi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250624-more-qseecom-v3-7-95205cd88cc2@oss.qualcomm.com> References: <20250624-more-qseecom-v3-0-95205cd88cc2@oss.qualcomm.com> In-Reply-To: <20250624-more-qseecom-v3-0-95205cd88cc2@oss.qualcomm.com> To: Bjorn Andersson , Maximilian Luz , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Ard Biesheuvel , Konrad Dybcio Cc: Johan Hovold , Steev Klimaszewski , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-efi@vger.kernel.org, Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4862; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=WYHsAMervqm5DoLC3yRi7Ntut5budPkixZWiTgVfZ9k=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ0YU57OPQU7Lk6fcrjl0ptDxvHvjFHeeN1GHLPQz0sQ3S n/m/MbWyWjMwsDIxSArpsjiU9AyNWZTctiHHVPrYQaxMoFMYeDiFICJREqw/y8r9urNq1K89bSr kmv79YKERREzp3846ag1399uceyOqJNXtrJuq+xoPNuzqHPND2ON/uV5jknuvWqzY4PW6DNpF6+ We+Te1ygSVrbgiZ/RIzne0ju7pL7wtXdr/M/ct9bBsVXS4cqH8gALJ6WJLvI6pfsc2Z0Vj6ouX3 Bza/Deq6uL7FKMF20VemOxe7mT8estqZKvHCTVp626dt+lgU3F4IHhF9XM5+ximZ2yyc833VJUY N4nphLzM7gzL+lv+umIuz8nSsQUlXCWrDjPefRXu9EZpz0Xrxl2zOZbf7hpX1iefaX617JVyxW/ Ov4tiQlkC4uPkjf9s1FwYTl3VZpaebatxN75JyNEGBQA X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=NdDm13D4 c=1 sm=1 tr=0 ts=685a09f9 cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6IFa9wvqVegA:10 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=-DwM1zgTEUuOfulMvEAA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjI0MDAxNyBTYWx0ZWRfX9E8v8lvh5HfD rjsKw0Of1cvb2md2+1Jz6TH+KLdupWNLPyR++d/ul/sG4jXN2SMVDxMwiW7M2tKYIqtuwhK7Ux/ EcjbajYdvzy1cyKmKMfzBMRVQ5yBByrHXJtQWNm69kfbf7v/exSrmLpd9uk77nAYwWNJ+UIdu+a 6STfRnuoNIiWS45Y/c3zaA1sWCsxy/d54evUnytfRnTIeH2mRQWoG9LiZhBlNuEP2KVDSQVZcyT zbujXlH643n0TQRExij00+97xlCuevvTOr18ETfzqWhjYpub9Y6sKYEXxrHMPNaFEzeWPXoExrE STUrQMjI5oXeplhaJN/V++sO3CB1S/XNbqLY/SrsBPOV6zbpduenjMBcXpgAQ2gd0O+aaEKuNw+ sNI0rEyaf5SCEHIxXttwHOT1IZIgqufnYrxQRf0C7P5Il9t2J7/S7/uFtrrBXnQ/rEpVAz6B X-Proofpoint-ORIG-GUID: x1LTFpUy-NlZphCQ3xgDqGlcQgmPT07V X-Proofpoint-GUID: x1LTFpUy-NlZphCQ3xgDqGlcQgmPT07V X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-24_01,2025-06-23_07,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 mlxscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 suspectscore=0 mlxlogscore=999 adultscore=0 clxscore=1015 impostorscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506240017 From: Dmitry Baryshkov Listing individual machines in qcom_scm_qseecom_allowlist doesn't scale. Allow it to function as allow and disallow list at the same time by the means of the match->data and list the SoC families instead of devices. In case a particular device has buggy or incompatible firmware user still can disable QSEECOM by specifying qcom_scm.qseecom=off kernel param and (in the longer term) adding machine-specific entry to the qcom_scm_qseecom_allowlist table. Signed-off-by: Dmitry Baryshkov Signed-off-by: Dmitry Baryshkov --- drivers/firmware/qcom/qcom_scm.c | 49 ++++++++++++++---------------- include/linux/firmware/qcom/qcom_qseecom.h | 1 + 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c index 5bf59eba2a863ba16e59df7fa2de1c50b0a218d0..49dcb30311f9c5eae697317ec6f32ac73d81314a 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -1981,6 +1981,7 @@ int qcom_scm_qseecom_app_send(u32 app_id, void *req, size_t req_size, } EXPORT_SYMBOL_GPL(qcom_scm_qseecom_app_send); +static unsigned long qcom_qseecom_disable = QCOM_QSEECOM_QUIRK_DISABLE; static unsigned long qcom_qseecom_ro_uefi = QCOM_QSEECOM_QUIRK_RO_UEFIVARS; static char *qseecom = "auto"; @@ -1989,32 +1990,20 @@ module_param(qseecom, charp, 0); /* * We do not yet support re-entrant calls via the qseecom interface. To prevent - * any potential issues with this, only allow validated machines for now. Users + * any potential issues with this, only allow validated platforms for now. Users * still can manually enable or disable it via the qcom_scm.qseecom modparam. + * + * To disable QSEECOM for a particular machine, add compatible entry and set + * data to (void *)false. */ static const struct of_device_id qcom_scm_qseecom_allowlist[] __maybe_unused = { - { .compatible = "asus,vivobook-s15" }, - { .compatible = "asus,zenbook-a14-ux3407qa" }, - { .compatible = "asus,zenbook-a14-ux3407ra" }, - { .compatible = "dell,xps13-9345" }, - { .compatible = "hp,elitebook-ultra-g1q" }, - { .compatible = "hp,omnibook-x14" }, - { .compatible = "huawei,gaokun3" }, - { .compatible = "lenovo,flex-5g" }, - { .compatible = "lenovo,thinkpad-t14s" }, - { .compatible = "lenovo,thinkpad-x13s", }, { .compatible = "lenovo,yoga-c630", .data = &qcom_qseecom_ro_uefi, }, - { .compatible = "lenovo,yoga-slim7x" }, - { .compatible = "microsoft,arcata", }, - { .compatible = "microsoft,blackrock" }, - { .compatible = "microsoft,romulus13", }, - { .compatible = "microsoft,romulus15", }, - { .compatible = "qcom,sc8180x-primus" }, + { .compatible = "qcom,sc8180x", }, + { .compatible = "qcom,sc8280xp", }, { .compatible = "qcom,sc8280xp-crd", .data = &qcom_qseecom_ro_uefi, }, - { .compatible = "qcom,x1e001de-devkit" }, - { .compatible = "qcom,x1e80100-crd" }, - { .compatible = "qcom,x1e80100-qcp" }, - { .compatible = "qcom,x1p42100-crd" }, + { .compatible = "qcom,sdm845", .data = &qcom_qseecom_disable, }, + { .compatible = "qcom,x1e80100", }, + { .compatible = "qcom,x1p42100", }, { } }; @@ -2046,12 +2035,22 @@ static bool qcom_scm_qseecom_machine_is_allowed(struct device *scm_dev, match = of_match_node(qcom_scm_qseecom_allowlist, np); of_node_put(np); - if (match && match->data) + if (!match) { + dev_info(scm_dev, "qseecom: untested machine, skipping\n"); + return false; + } + + if (match->data) *quirks = *(unsigned long *)(match->data); else *quirks = 0; - return match; + if (*quirks & QCOM_QSEECOM_QUIRK_DISABLE) { + dev_info(scm_dev, "qseecom: disabled by the quirk\n"); + return false; + } + + return true; } static void qcom_scm_qseecom_free(void *data) @@ -2086,10 +2085,8 @@ static int qcom_scm_qseecom_init(struct qcom_scm *scm) dev_info(scm->dev, "qseecom: found qseecom with version 0x%x\n", version); - if (!qcom_scm_qseecom_machine_is_allowed(scm->dev, &quirks)) { - dev_info(scm->dev, "qseecom: untested machine, skipping\n"); + if (!qcom_scm_qseecom_machine_is_allowed(scm->dev, &quirks)) return 0; - } /* * Set up QSEECOM interface device. All application clients will be diff --git a/include/linux/firmware/qcom/qcom_qseecom.h b/include/linux/firmware/qcom/qcom_qseecom.h index 8d6d660e854fdb0fabbef10ab5ee6ff23ad79826..d48044ece20cc9ebac3357a642dc671c349d4343 100644 --- a/include/linux/firmware/qcom/qcom_qseecom.h +++ b/include/linux/firmware/qcom/qcom_qseecom.h @@ -52,5 +52,6 @@ static inline int qcom_qseecom_app_send(struct qseecom_client *client, } #define QCOM_QSEECOM_QUIRK_RO_UEFIVARS BIT(0) +#define QCOM_QSEECOM_QUIRK_DISABLE BIT(1) #endif /* __QCOM_QSEECOM_H */