From nobody Thu Oct 2 03:32:29 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 F3DA01FFC48 for ; Wed, 24 Sep 2025 04:18:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758687534; cv=none; b=sy8MWqUBsBkL0RAJPLmZJ1RjE+wc/kUtBbEYvQZyvJnAPpjclypC91oshgBKI7y8za02WFeM+7Eq6WvXN+WblXmfYlb4UZVDl1WzZf1032PAXvM2OrlVxiCsmQPKXAjUTgo+eRjESA8eXeF1xvrYKMZ9JVJIVm6Yn0GGj7wn2WM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758687534; c=relaxed/simple; bh=vAOxkekAq0XAFtf1iF/yTz+5EAkazBCOXOBpHqiMo4U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ldQEpDnw7NEVqROsUnr3pWLr/g9heFB/dH3zzK1f+b0bCK1PTned/Hendg+M1WDvK+sdO3ZNdPfGDuq2/DWFaw0yKmDR1spg9paFfLMwIH2Ij48trcauUjfMw6FC7Ui7PfjlgRvh/QCJHRr6DzT6QbpSjX5Du7sjT+IAM15bAe8= 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=YC3bdMsB; arc=none smtp.client-ip=205.220.168.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="YC3bdMsB" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58O0ogEw020615 for ; Wed, 24 Sep 2025 04:18:52 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= YFYJHXelKWltng43munPOk4MoakVnMECkySEDXZBqvc=; b=YC3bdMsB48lmVcRi vZ+ngSzTmbmiiEIpsBIyM8/3/nb/BN1Fx64/mz16nC1m2CkIh6bJiVlLyvMyCsSr 9Z/R8HplBm5ljxF0Vd8PHcTUdrJGqiUsSUy70D3n9r635HegQdwaFjHpYVEEVTrU LCFk2peY4/8ZLI1DbgeQHVjUnGtnO04LgsQyrTyDcEKrNsSjrs4Kwb/l8/heiheC lmOMginlnjC/au7CwXXNtsQeL02TvosjlUQ40CkG7U3TfCL+d+jrhn4LSlx2xAZn h0uc7atNeRADtSg25ta/Rdbu+khH/kKsVepFheO5+aneT0q1XwKjemMyMCb+c+MC rZF1jg== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49bhvjvae3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Wed, 24 Sep 2025 04:18:52 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-269a2b255aaso109200605ad.3 for ; Tue, 23 Sep 2025 21:18:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758687531; x=1759292331; 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=YFYJHXelKWltng43munPOk4MoakVnMECkySEDXZBqvc=; b=l2Zne3G1MW9EibCQcA2cfPb66Zj43h6Z9O/tkij/snIREh9USHUEk87ZPFg211PhKh gEXspaQW2NokaMDEfs+gAnZWMEfX4R6xrIe2n444yhG3SNpsFR4w+TZ7v1iH1RGm0OqD Lgs2vfvXTXRJ2C5vdXvj5oPShGPKLZjHlfEP0P/PIPQ4eUT18qZKoCv/IC2brVoR3Bv2 tU1ImgoXrriks3cuyAr9zZosKMIpEz/VR53nUKqmxiXA3JmLB+B20TrstW0RFqU+Rksf xGmNgHE708eA3uWlsDTm+8Wpclv9ALEklKELQUvdoLJQGtWvgAR5X3bjLoGqHEEQDkv0 XT0Q== X-Forwarded-Encrypted: i=1; AJvYcCX0A9rQQ+rjuXRKsgQY9O8NpE8B/4Kx1PgLppKTjV464tbBvjtqtS+ITuF5fC/fTu4C0I4HKCFrinYCRtE=@vger.kernel.org X-Gm-Message-State: AOJu0Yxg+B+RVQVR7fdYqEU3Bu7zwtU2xjYgsC8yYQltBW26BV+SqXiS 5mmRXbCxcDq8AvqQsRjtd1UxTaunkerM53q6L9SD34TgKj7RDX8+C85wHBdAzBksgrPg2PCqK5i 62m6ft6iS2SoCP8zf1cdyJCUnaueijsTjRF6ezQIEMyKhkd52giKmIjADNCERoSKFUIO7uYlLqb c= X-Gm-Gg: ASbGncvl/VL5wL053SnvFrHoCONFsmWwISC3OJ9/xjqjl72ZZ4bOwHG9SPG1jenZIct v4NejesbZ2FTtUgKjji5XIMkRLIODGKrHNXSEMaf0RbKhf4fhoKDa0hwuNt4ghtlroHUpAXXyp7 5FLK+Jnrv8UJxes93pyzg8ILKmVxPgxOaPBmDY4KTxP7FayHN9XLriFCr+oGFjF9SJKtUYFKn6b a/1hh8buOYq3ZjJEOYHi3RWijkX2aN5axsvY54pLwEu8cclptQZe7/cmT6TkYvistl26qWBigXD 9c2rw2T0cX8XeEddmdfUKn+Etn9g+9fi4FCGNva7QzRTce1RFmI+s82qPM/EeQjabR4WQE3x/TV V8rk76CsUGzramXM= X-Received: by 2002:a17:903:249:b0:24b:4a9a:703a with SMTP id d9443c01a7336-27cc2008bd1mr66566205ad.17.1758687530978; Tue, 23 Sep 2025 21:18:50 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF6we6xqyGamppkrAtUGaZGv5vNEE/nzDTz/IbJ8bP6q0yQQhcoqovlEEQy0ile8G16PKGedw== X-Received: by 2002:a17:903:249:b0:24b:4a9a:703a with SMTP id d9443c01a7336-27cc2008bd1mr66565865ad.17.1758687530536; Tue, 23 Sep 2025 21:18:50 -0700 (PDT) Received: from hu-jingyw-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2699363989fsm170133885ad.92.2025.09.23.21.18.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Sep 2025 21:18:50 -0700 (PDT) From: Jingyi Wang Date: Tue, 23 Sep 2025 21:18:42 -0700 Subject: [PATCH 1/2] soc: qcom: smp2p: Add irqchip state support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250923-smp2p-v1-1-2c045af73dac@oss.qualcomm.com> References: <20250923-smp2p-v1-0-2c045af73dac@oss.qualcomm.com> In-Reply-To: <20250923-smp2p-v1-0-2c045af73dac@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Jingyi Wang , Chris Lew X-Mailer: b4 0.15-dev-99b12 X-Developer-Signature: v=1; a=ed25519-sha256; t=1758687528; l=3139; i=jingyi.wang@oss.qualcomm.com; s=20250911; h=from:subject:message-id; bh=UxXoglLSEU+DZqiS+nYN9aP1Dukcd8ZvovND3Gth7mk=; b=gD4YKQ/PoN/J7TAsa3IxwX85M4PllJqi76mGEMMOgvBFYMvlUOhXAjUd6Cl91ouUvtGfjzSRP fK65kK+oT7jDuvPuYWfmocgE1rRT22El3PzE5FZMQeKUKlIFjxgm28r X-Developer-Key: i=jingyi.wang@oss.qualcomm.com; a=ed25519; pk=PSoHZ6KbUss3IW8FPRVMHMK0Jkkr/jV347mBYJO3iLo= X-Proofpoint-ORIG-GUID: 11I5nLRYDVvMPfDVC7Ctw1ck9H-enOqO X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTIzMDAxMSBTYWx0ZWRfX0x7M4I05YKdV rPibOLgiBbXeH3//ZG5xLfcsho796s43to3c5rXor4SpxTIFIWXCvTVgToin/eYzXY9foj4XQeM GML8994JXJH0OBBP83qZZTgTBz6bCdPk/t7ASNzWSuF6bCHSqpwJZly+nR8xoTjeUBPPT5CJSlq sJJnZDfUC9CdCmyo7EdsPhcAQi7iA78vzAaaZBGVuTFQxyJONA8r1uj87jgNqfuBi6N2HIS5f4J hVZNV2JSxNdnkkSY2bkv3dCJ4BXjFplpyhZLQBhUOx0n+XxWFWd3MD8Jryf0rxU3k20Op7X4ftN Vf4tWqtqCx9sG4REfYn2prypmk66nwtaLSQ7irNZe3JMlwNDFURzzeman+ic76fqi2ZOtU1OCaO L8Uj0hv0 X-Proofpoint-GUID: 11I5nLRYDVvMPfDVC7Ctw1ck9H-enOqO X-Authority-Analysis: v=2.4 cv=Csq/cm4D c=1 sm=1 tr=0 ts=68d3712c cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=yJojWOMRYYMA:10 a=EUspDBNiAAAA:8 a=Ht6YvOiLTg5Y4LB-hcAA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-23_08,2025-09-22_05,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 adultscore=0 impostorscore=0 phishscore=0 clxscore=1015 spamscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2509230011 From: Chris Lew A remoteproc booted during earlier boot stages such as UEFI or the bootloader, may need to be attached to without restarting the remoteproc hardware. To do this the remoteproc will need to check the ready and handover states in smp2p without an interrupt notification. Add support for the .irq_get_irqchip_state callback so remoteproc can read the current state of the fatal, ready and handover bits. Signed-off-by: Chris Lew Co-developed-by: Jingyi Wang Signed-off-by: Jingyi Wang --- drivers/soc/qcom/smp2p.c | 55 ++++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 55 insertions(+) diff --git a/drivers/soc/qcom/smp2p.c b/drivers/soc/qcom/smp2p.c index cb515c2340c1..e2cfd9ec8875 100644 --- a/drivers/soc/qcom/smp2p.c +++ b/drivers/soc/qcom/smp2p.c @@ -222,6 +222,39 @@ static void qcom_smp2p_negotiate(struct qcom_smp2p *sm= p2p) } } =20 +static void qcom_smp2p_start_in(struct qcom_smp2p *smp2p) +{ + unsigned int smem_id =3D smp2p->smem_items[SMP2P_INBOUND]; + unsigned int pid =3D smp2p->remote_pid; + char buf[SMP2P_MAX_ENTRY_NAME]; + struct smp2p_smem_item *in; + struct smp2p_entry *entry; + size_t size; + int i; + + in =3D qcom_smem_get(pid, smem_id, &size); + if (IS_ERR(in)) + return; + + smp2p->in =3D in; + + /* Check if version is initialized and set to v2 */ + if (in->version =3D=3D 0) + return; + + for (i =3D smp2p->valid_entries; i < in->valid_entries; i++) { + list_for_each_entry(entry, &smp2p->inbound, node) { + memcpy(buf, in->entries[i].name, sizeof(buf)); + if (!strcmp(buf, entry->name)) { + entry->value =3D &in->entries[i].value; + entry->last_value =3D readl(entry->value); + break; + } + } + } + smp2p->valid_entries =3D i; +} + static void qcom_smp2p_notify_in(struct qcom_smp2p *smp2p) { struct smp2p_smem_item *in; @@ -368,12 +401,31 @@ static void smp2p_irq_print_chip(struct irq_data *irq= d, struct seq_file *p) seq_printf(p, "%8s", dev_name(entry->smp2p->dev)); } =20 +static int smp2p_irq_get_irqchip_state(struct irq_data *irqd, enum irqchip= _irq_state which, + bool *state) +{ + struct smp2p_entry *entry =3D irq_data_get_irq_chip_data(irqd); + u32 val; + + if (which !=3D IRQCHIP_STATE_LINE_LEVEL) + return -EINVAL; + + if (!entry->value) + return -ENODEV; + + val =3D readl(entry->value); + *state =3D !!(val & BIT(irqd_to_hwirq(irqd))); + + return 0; +} + static struct irq_chip smp2p_irq_chip =3D { .name =3D "smp2p", .irq_mask =3D smp2p_mask_irq, .irq_unmask =3D smp2p_unmask_irq, .irq_set_type =3D smp2p_set_irq_type, .irq_print_chip =3D smp2p_irq_print_chip, + .irq_get_irqchip_state =3D smp2p_irq_get_irqchip_state, }; =20 static int smp2p_irq_map(struct irq_domain *d, @@ -618,6 +670,9 @@ static int qcom_smp2p_probe(struct platform_device *pde= v) } } =20 + /* Check inbound entries in the case of early boot processor */ + qcom_smp2p_start_in(smp2p); + /* Kick the outgoing edge after allocating entries */ qcom_smp2p_kick(smp2p); =20 --=20 2.25.1 From nobody Thu Oct 2 03:32:29 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 CD02F222582 for ; Wed, 24 Sep 2025 04:18:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758687535; cv=none; b=HgLOucrQKange9DPgk10F+CYl0QNwR40Rp2WG10LjAl/hYSk9yAD4Y2qFeAs1aQa2Ry8DnTggO+Ky5nn6u0w/CdPzOjemNnjXa26GU4k4PxORxbi0pdESsD/2gYR4sC0DMbkWkbhTUZuVbWqzvr1kkD7LJi4+MGHVj4/yeMKhzQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758687535; c=relaxed/simple; bh=y3kDiWminIlh4cAMLwWiVIQUVLbdzIjh8+MBDi4VRcg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IUNeFt8+lJpowN3dtrwBQpAc+BnrljAifxTFV+HOhTdfA7zv0VM8liP5PWTSuQu2Jz9ETzaia8LSbABzEzyOKRTo7mHB4PtwYv2DSuUzaHTTFPCOi/mh8RaKNrJb0cpBT+qzAthgaIE0VvJ3vgE9NrEc+r49rNr4uFJ56u72nEY= 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=a/aN7J+s; arc=none smtp.client-ip=205.220.168.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="a/aN7J+s" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58O2t2LG001952 for ; Wed, 24 Sep 2025 04:18:53 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= 5MzWxFE6SmNE6Sd0JJ62qs2K1+TijFUt9wCgiHhJ3do=; b=a/aN7J+s1FOfcBmp wS1htj8rZ/VJANYqKj7em0XEUvDVo+H/2JDakZOZiqDEreYdjjCIpBe/mxkVXN8H iw0AkR1Byn4xSp7UcEL4LLaqBHkt1Gh+o5lKNpy1puzjMsPn2iUxJYVwljOZrMy6 V3uUpK9r88tTadzm2owewPU73Jb4RlJXfRpKJBfryd1S1DIguEwNodfC36webv8L B/wMXVGraBCTrM4yI8Q6aJwUHNdqbR0vep2ni43mAn6OtBIArUiJI777wML4x3SA pOphqqjywS/2mykTJY4O0Vb0ZzEd2e6OPeHQ+/oXAxmiqGRQR0aiDoRQdVw9iuvW 5NFdNg== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 499n1fjvq8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Wed, 24 Sep 2025 04:18:52 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-269af520712so70587015ad.2 for ; Tue, 23 Sep 2025 21:18:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758687532; x=1759292332; 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=5MzWxFE6SmNE6Sd0JJ62qs2K1+TijFUt9wCgiHhJ3do=; b=pLHnEyqpNRX0V8NQD1e3i40OkEia1FUO/SPPNdYDsq/MP2G3HcjWFyd5Dot+OC7jW3 torsj9i5LjOWE/O/BcQvwbdZdVLRvUH+p9gXQKC/JoFtJ9fRDGfuhpL9itjaLZpcVJKh lKs/2OcQLBcI2HEcytCSst9PB42CRxCzZF+FjlfIFWnwZplVccAG5kp3N2Kaln4uZQ0x y7WCjcRcXaf0WH+YADOinXOhUD73w90t5bxruqqUDntAtWGVfZOEYlNGJbqYm6yiecmd mOqfgoWWa5FjTV7IAOBo7P0c1SvnmPP6ZXWrJ40NInBzsSLFaaUxzwanT0F7ayXBjLLP tEag== X-Forwarded-Encrypted: i=1; AJvYcCXG0FfNwcRE2gLAb5iwWT8ZoK3JzSzpt5ud8iinThXRQ47MO6A21V6OcK9zKgdapQxw0oT4F/Bduu5AlcY=@vger.kernel.org X-Gm-Message-State: AOJu0YztwHvb6gOqcawmPo2m6hqvNcmATp7+yWb+YrxcKvBCb68PssjR sDQ8c+de5DJYuw/WmcnPtalXuvA6nMn/EVKqEDeF1Mf5ScHqSMVizSOa+2bokfFEd83nvDOqad9 QCHKUM7K1dRy0f6o5yjRYPruyCu4uQO/3IZh9Juq54PGA5psPWtsuxd5AN/unOIRKS6LgtxsJt7 k= X-Gm-Gg: ASbGncv4FYB/sHum9lG9GG6+EyYETFlGFjzWfIyBPItPq1+5ymyLDLOsW1MY7Y675ZT 9uAHIwYlQoCTtyKf+bb2F5LORuuneAsbrOon+zZqOZvxMr8sgGRYfvcKKKqwhSDUYtgM7DQ9d8v JSoxNEWoQB0jItVP6xcarLnBWFcQUt5YkyM337BOd5KjNMTCS96eVW7YlZxpISuINejSb0R08Zz vqrQWDZQ6kFpo91KmYdchZe9gBp80+/eVG4JOJuweJzbVBwcGOzAaX3F6cyfiyfzLjIf7qqEQuc rMBYn3MUFs27bIdcKKwqemzXhLAF9WZMV44r2h5oab/V99ZjiOfDhUqJ9iLFxZBrwC6Hrv2X8Tv fbi86nYDuUCN0eAs= X-Received: by 2002:a17:903:2c0b:b0:269:8edf:67f1 with SMTP id d9443c01a7336-27cc13808bbmr60166455ad.6.1758687531874; Tue, 23 Sep 2025 21:18:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE7r66V5B2kT2HM7RA4fkMlGVLXRBRzSC0bio+S3HcT4gSSi9reHGYc6Y5F2yK+Vb6ftbA61A== X-Received: by 2002:a17:903:2c0b:b0:269:8edf:67f1 with SMTP id d9443c01a7336-27cc13808bbmr60166235ad.6.1758687531388; Tue, 23 Sep 2025 21:18:51 -0700 (PDT) Received: from hu-jingyw-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2699363989fsm170133885ad.92.2025.09.23.21.18.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Sep 2025 21:18:51 -0700 (PDT) From: Jingyi Wang Date: Tue, 23 Sep 2025 21:18:43 -0700 Subject: [PATCH 2/2] soc: qcom: smp2p: Add support for smp2p v2 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250923-smp2p-v1-2-2c045af73dac@oss.qualcomm.com> References: <20250923-smp2p-v1-0-2c045af73dac@oss.qualcomm.com> In-Reply-To: <20250923-smp2p-v1-0-2c045af73dac@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Jingyi Wang , Chris Lew X-Mailer: b4 0.15-dev-99b12 X-Developer-Signature: v=1; a=ed25519-sha256; t=1758687528; l=3194; i=jingyi.wang@oss.qualcomm.com; s=20250911; h=from:subject:message-id; bh=Iv1mr0CsUVNvjD6gvfRUYbwxcg/epGGs6ZABQD1hV/k=; b=EU8eBSCHicFs67DlRHihnPl91dsbq99bdcVFpgiWeT1t22XtBq4SuigAYW3TRa2TFRM8Joc6P QvWns9Zje6PAdutnp3VcwsS1dUbDqhRnXh/fBhA3sPsH7lJGQfUVy2m X-Developer-Key: i=jingyi.wang@oss.qualcomm.com; a=ed25519; pk=PSoHZ6KbUss3IW8FPRVMHMK0Jkkr/jV347mBYJO3iLo= X-Proofpoint-ORIG-GUID: ERXvCkXtb60A8DQXYecby8tLQ_diLbIa X-Proofpoint-GUID: ERXvCkXtb60A8DQXYecby8tLQ_diLbIa X-Authority-Analysis: v=2.4 cv=No/Rc9dJ c=1 sm=1 tr=0 ts=68d3712d cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=yJojWOMRYYMA:10 a=EUspDBNiAAAA:8 a=Xvny5BtixxlE2jsoVxoA:9 a=0bXxn9q0MV6snEgNplNhOjQmxlI=:19 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTIwMDAzNyBTYWx0ZWRfXxq9pUf3+23ON XDT1faj5gxlP+Y6L5/e4svZjMQ9QLbGUOWWkta6BzUMWdTWjbVXIxz8i6AXAnCoQVik1MDC+5zK ZHaNzi9IwBwYCzWNVGJQ75bXxxe8Yc7E9YaB38nt3Al02C05NQXQ1eb8+5jJHdJv/ABHHSFxMeL 0L+Cgf+jkFGZX7Zew1AcsmTVj1Ryfn5ntjpKcweM3J9tifb8Mnxi5B0aXroZmgraH37PfKZ1afk v/5EecBgNQouHS9koKq+MYT3QnOhkWL1xRnJjhBgvgKb5GQPm7BYuX7mWG+xu9nPFQuCtYkDF/y G9vr5YhLu/QMcFFmVAzS+16sh9x9/K//sDEBj9dK3LTv9tfBuAPdiOjzOFsgSZzWNdDcGr2GK5V XCFtHgoj X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-23_08,2025-09-22_05,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 suspectscore=0 adultscore=0 malwarescore=0 phishscore=0 bulkscore=0 priorityscore=1501 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2509200037 From: Chris Lew Some remoteproc need smp2p v2 support, mirror the version written by the remote if the remote supports v2. This is needed if the remote does not have backwards compatibility with v1. And reset entry last value on SSR for smp2p v2. Signed-off-by: Chris Lew Co-developed-by: Jingyi Wang Signed-off-by: Jingyi Wang --- drivers/soc/qcom/smp2p.c | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/drivers/soc/qcom/smp2p.c b/drivers/soc/qcom/smp2p.c index e2cfd9ec8875..5ea64a83c678 100644 --- a/drivers/soc/qcom/smp2p.c +++ b/drivers/soc/qcom/smp2p.c @@ -48,10 +48,13 @@ #define SMP2P_MAGIC 0x504d5324 #define SMP2P_ALL_FEATURES SMP2P_FEATURE_SSR_ACK =20 +#define SMP2P_VERSION_1 1 +#define SMP2P_VERSION_2 2 + /** * struct smp2p_smem_item - in memory communication structure * @magic: magic number - * @version: version - must be 1 + * @version: version * @features: features flag - currently unused * @local_pid: processor id of sending end * @remote_pid: processor id of receiving end @@ -180,14 +183,23 @@ static void qcom_smp2p_kick(struct qcom_smp2p *smp2p) static bool qcom_smp2p_check_ssr(struct qcom_smp2p *smp2p) { struct smp2p_smem_item *in =3D smp2p->in; + struct smp2p_entry *entry; bool restart; =20 if (!smp2p->ssr_ack_enabled) return false; =20 restart =3D in->flags & BIT(SMP2P_FLAGS_RESTART_DONE_BIT); + restart =3D restart !=3D smp2p->ssr_ack; + if (restart && in->version > SMP2P_VERSION_1) { + list_for_each_entry(entry, &smp2p->inbound, node) { + if (!entry->value) + continue; + entry->last_value =3D 0; + } + } =20 - return restart !=3D smp2p->ssr_ack; + return restart; } =20 static void qcom_smp2p_do_ssr_ack(struct qcom_smp2p *smp2p) @@ -222,6 +234,20 @@ static void qcom_smp2p_negotiate(struct qcom_smp2p *sm= p2p) } } =20 +static int qcom_smp2p_in_version(struct qcom_smp2p *smp2p) +{ + unsigned int smem_id =3D smp2p->smem_items[SMP2P_INBOUND]; + unsigned int pid =3D smp2p->remote_pid; + struct smp2p_smem_item *in; + size_t size; + + in =3D qcom_smem_get(pid, smem_id, &size); + if (IS_ERR(in)) + return 0; + + return in->version; +} + static void qcom_smp2p_start_in(struct qcom_smp2p *smp2p) { unsigned int smem_id =3D smp2p->smem_items[SMP2P_INBOUND]; @@ -516,6 +542,7 @@ static int qcom_smp2p_alloc_outbound_item(struct qcom_s= mp2p *smp2p) struct smp2p_smem_item *out; unsigned smem_id =3D smp2p->smem_items[SMP2P_OUTBOUND]; unsigned pid =3D smp2p->remote_pid; + u8 in_version; int ret; =20 ret =3D qcom_smem_alloc(pid, smem_id, sizeof(*out)); @@ -537,12 +564,14 @@ static int qcom_smp2p_alloc_outbound_item(struct qcom= _smp2p *smp2p) out->valid_entries =3D 0; out->features =3D SMP2P_ALL_FEATURES; =20 + in_version =3D qcom_smp2p_in_version(smp2p); + /* * Make sure the rest of the header is written before we validate the * item by writing a valid version number. */ wmb(); - out->version =3D 1; + out->version =3D (in_version) ? in_version : 1; =20 qcom_smp2p_kick(smp2p); =20 --=20 2.25.1