From nobody Mon Apr 13 13:55:22 2026 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 BFAFD2C0F91 for ; Fri, 6 Mar 2026 03:14:54 +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=1772766896; cv=none; b=X84Z1LC1UR/W1c5IkakpnVYyr516+XuPgMR8H+PBs2Znp58nLYwFeulzbnKsPIBhos2qcGX5cugmRY88Nr/45MaFLhBR9uPanyGGQIPGgIuChVbrgG4oGU2PzZVDqYjG0z5GViXqI6bA/0d2FInwIUKNGzm7FnOqay3otZjSP84= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772766896; c=relaxed/simple; bh=+saMSvsJY6mVD9QU0OTzOwKazBDuFAb+H2lS6aaGlIg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lB0g5u3HRRYxJikNwUHIQF1jBGtuWjqaxZYuD7TF3aKBXX+KDy4YKcQAZVeSfxeP6khT29EesV5IvsR4CBJ4QwvQJBzN4JnVUEJbVsBlzWrd40cfWcZL/im6JJHVmaB6DbOqlPSrT+DV3PL2qXrgcUQllzZpI6CSCSCj82oJmkA= 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=f9Wpcb4S; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=D/hzSmd8; 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="f9Wpcb4S"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="D/hzSmd8" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 625KmVLC2267118 for ; Fri, 6 Mar 2026 03:14: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= Wb0RowlXX3BwSjJGetpaGFa/hxWRGmgzMfSpVsngYC8=; b=f9Wpcb4SS+3OdaSO ax0KQwFAGb1LS8t2DSmmm2S7IE05XINLFMC59+VjAqCIXo/MEJkP1MwRa28CGaZy jKMWqtgO2g5EJoHEJvdqGG0oL6YtRj/XFcstUauje4c2p6k2R2tJXW5qJTz8WvX3 zANoDT58QS/3XJqjn69XnDJEzF7UGqBsM3ANs1qzK+EajR98JJH62VMR5ujG2Rxo 1mqhGaLVWpQP4XdNRu7+0YxXUVnu6bvrzRy02xK5U97G6ZXt35fKp6XjvZz2f+U5 aknM+bhyJHhilb2zlZ0auk5eykNN3LAKzjYeMbkIMxF9+6K+1Y94AR9QnY139H8T aFd06g== Received: from mail-dy1-f200.google.com (mail-dy1-f200.google.com [74.125.82.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cq380v20h-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Mar 2026 03:14:52 +0000 (GMT) Received: by mail-dy1-f200.google.com with SMTP id 5a478bee46e88-2be2f742c46so10960277eec.0 for ; Thu, 05 Mar 2026 19:14:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772766856; x=1773371656; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Wb0RowlXX3BwSjJGetpaGFa/hxWRGmgzMfSpVsngYC8=; b=D/hzSmd8AP1QtKFS4yAqf6j8xOxjtR1+7/6BBTFPya3e6bEMgOWdNczRsMYbH8jpAL GP+PFF6+b2JzQUS6WFzJpvZhKp+so3GG3hkqGH7p6LmQ8JI8lRgSCNdsQbIlAONCbyGj CTnwggunHdUbXJYnhH24snUC2Xi0juDr1v8zSlOo0KRcYZ3cgRUKHFJDMVGw9JrhXIsD 0Ciiu7O/U/dLcpoYGXJ03hYvLcIVTf+Xy13apmx/5K1S5HYlTARvdyX7Fbhki6qU9W6P vOxaESCUM+gQfb1BPx4k9EMSoh/lD3Ipr85akCQL1FhgSn67eIn34FxQI9OhddZMONq7 dljQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772766856; x=1773371656; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Wb0RowlXX3BwSjJGetpaGFa/hxWRGmgzMfSpVsngYC8=; b=rXam/Rr22djOAfvL50mk2bKq+6l6EmbEtA6rQe5zoHGIyus0zxOVjJAJS0WCC37s4r BMvG+lWZlka5XYIwCLXRr/7iNn37b5qvGdGAGjM2V9C8YLwsRqMzoZ+np+tE9eF1JI/X zGKzKR7cfoT9D4rDmXuPfY/HO/lJOSxLad4EcEoj8wNMAwIvXUtTOlz+YwpAAqvZWdOC NA6BjcttxFZgXdYDYzfpklxrx6Yn3IsGX8VWH4QwXD7bXKmiJ79tNaSN6peckJ64wJ74 8loDQFhYP+fyyzvpeUbF4+I/P+Fe1WoUp+D8nIfzyZ8SdiosxeBuKYio4CLAD8UI6IGq 0Ikg== X-Forwarded-Encrypted: i=1; AJvYcCXA1atq5nlYh8oTdmuVWjsZpARALJk0iu0rAq0l1aa6pwoyYoSFCWzXopzd/HWv1x9vqBB3aggZxkWusFE=@vger.kernel.org X-Gm-Message-State: AOJu0YwucKRhCU4d0yjrIY90I9CGhbWrmav/Q4xH38vrg+VbINTTG6Nk pWSugbZj1xMzx8pv4sAW3Jn0GVsbC/YQam+2Aj6aJ8diiJCQoxB4mi6O9UrxoBhdKSODUnfaLZC 3fEEv5KGLfWDeCGOmorPkvp1Bul2F9q3zPmUj6suOxr379LHjqcfmHyubBA8JYolLuseKGb3J7Q == X-Gm-Gg: ATEYQzyne8zn4vOMdA4Wpos89yF2DH1g2dNbY9+P1cdZB3W1Za5pnD9T8GmPqfWaA2j didN2SWgJdf7q6YBB9C1syZSHSpa6vMjiCdmCMMJcQmeK2wOj8bKu/EV/8ToUysvfPLBJfvP5iM n9Am1pdOAndlABMlEjDvyAIG5AKqN9yRxs3RQ18IINkvKs45X3wOZCJ1Jhp2oPV1CESEiqn1J1S 5Ylem9BL4dmZPptZBApn1YbNTxs808j9b9ynDmcluv+ROrGIjXssRcpkZNu+EVRGbsuCWuLeqIB qyclz9NC7Ok5hTdgB51FlqHegtiM/IY8YOdcFm6vxZKF5RsvWtGbAZuxTrtu6i1YaVOSg7GNbaW Gd5CPksNWr4MgnC6sSim3vxWdrdgWnILqdXJLl7wtgF6/BtAVkZq6s1gjsFSIen6id6ZCzYZFXQ == X-Received: by 2002:a05:7300:2393:b0:2be:2912:ff66 with SMTP id 5a478bee46e88-2be4e02bf42mr417257eec.25.1772766855717; Thu, 05 Mar 2026 19:14:15 -0800 (PST) X-Received: by 2002:a05:7300:2393:b0:2be:2912:ff66 with SMTP id 5a478bee46e88-2be4e02bf42mr417224eec.25.1772766854852; Thu, 05 Mar 2026 19:14:14 -0800 (PST) Received: from hu-fruiz-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2be4f82b1d3sm197839eec.11.2026.03.05.19.14.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Mar 2026 19:14:14 -0800 (PST) From: Francisco Munoz Ruiz Date: Thu, 05 Mar 2026 19:12:05 -0800 Subject: [PATCH 1/2] soc: qcom: llcc: Add per-slice counter and common llcc slice descriptor 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: <20260305-external_llcc_changes1set-v1-1-6347e52e648e@oss.qualcomm.com> References: <20260305-external_llcc_changes1set-v1-0-6347e52e648e@oss.qualcomm.com> In-Reply-To: <20260305-external_llcc_changes1set-v1-0-6347e52e648e@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Francisco Munoz Ruiz , Unnathi Chalicheemala , Konrad Dybcio X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1772766853; l=6960; i=francisco.ruiz@oss.qualcomm.com; s=20260305; h=from:subject:message-id; bh=b8ChikLHsWId/I8qgj89+yZl5hIW8YyLKIwiSgXH8+8=; b=g1t+/M3UjMwRuSFA58OKBOBWuAlAXTHn0UOyzSN0Py85Cfxq8LXIRddO5VTT6D3G9cRTfxNnE gawGSWZ95lUCfIMmEtwKfjz11XKYfQfBCIvSleALH2ls4Qngxyg5gZs X-Developer-Key: i=francisco.ruiz@oss.qualcomm.com; a=ed25519; pk=Gcv2CX7iHozjnQ4oK+9fINmBiQTmVC4SpaZzoM63CHE= X-Authority-Analysis: v=2.4 cv=I5Johdgg c=1 sm=1 tr=0 ts=69aa46ad cx=c_pps a=PfFC4Oe2JQzmKTvty2cRDw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=yKi7PR63AOroTQ6r2rwA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=6Ab_bkdmUrQuMsNx7PHu:22 X-Proofpoint-ORIG-GUID: 18HEVYBCnS8jgnl84HQVUAZE57i429Y9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDAyOSBTYWx0ZWRfX4AQ8Vm9leG4l F0bCzWG0q+ya58hR9FxaL69T8N/P1hVasjw/AjHKjW4sw4OQPBgoKu9B40U7/uFVZ2NXhFqLrDI rsr80WHvX0EtoYJoKbwrD6XXtUL1ZWH0HVFHNufNtB4fh45Z8n7IjwazDzyhhPJ5UZohsb9xvUT Ttnms0TaP85O+/LUYqs/RpYEicnQ+/aci6MIBygXu8jrmcw7vrbTE1sNKIbXA57pucYl8J57Ot7 Lox36bZzcayezIUIYqQuq9flsjGrqZbvYlKAwXxKnr30xMuzZTUqCDZnfFYUQmKdRPL/P4iOy4w F5FHX/aWyid2jnghqNcnSl0dNhE4bRenXZeeb4RD9C1tASS8LyJbIreDzkN47eRzPsORaBNmbVJ rnTeZVxV3Mw7n4ZoAiM+RBQnDWfbp9Nxl3G4LNlcPVzyXHm7Fm59KO2M4zVVEdom1pdTWUXwbj3 +l56h/H33p4Avbmrvfg== X-Proofpoint-GUID: 18HEVYBCnS8jgnl84HQVUAZE57i429Y9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_01,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 bulkscore=0 malwarescore=0 suspectscore=0 adultscore=0 clxscore=1015 impostorscore=0 spamscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603060029 From: Unnathi Chalicheemala Fix incorrect slice activation/deactivation accounting by replacing the bitmap-based activation tracking with per-slice atomic reference counters. This resolves mismatches that occur when multiple client drivers vote for the same slice or when llcc_slice_getd() is called multiple times. As part of this fix, simplify slice descriptor handling by eliminating dynamic allocation. llcc_slice_getd() now returns a pointer to a preallocated descriptor, removing the need for repeated allocation/free cycles and ensuring consistent reference tracking across all users. Signed-off-by: Unnathi Chalicheemala Signed-off-by: Francisco Munoz Ruiz Reviewed-by: Konrad Dybcio --- drivers/soc/qcom/llcc-qcom.c | 57 +++++++++++++++++++---------------= ---- include/linux/soc/qcom/llcc-qcom.h | 8 +++--- 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c index ad5899d083f3..2e7f05df93a6 100644 --- a/drivers/soc/qcom/llcc-qcom.c +++ b/drivers/soc/qcom/llcc-qcom.c @@ -5,7 +5,6 @@ */ =20 #include -#include #include #include #include @@ -4431,8 +4430,7 @@ static struct llcc_drv_data *drv_data =3D (void *) -E= PROBE_DEFER; struct llcc_slice_desc *llcc_slice_getd(u32 uid) { const struct llcc_slice_config *cfg; - struct llcc_slice_desc *desc; - u32 sz, count; + u32 sz, i; =20 if (IS_ERR(drv_data)) return ERR_CAST(drv_data); @@ -4440,21 +4438,14 @@ struct llcc_slice_desc *llcc_slice_getd(u32 uid) cfg =3D drv_data->cfg; sz =3D drv_data->cfg_size; =20 - for (count =3D 0; cfg && count < sz; count++, cfg++) + for (i =3D 0; cfg && i < sz; i++, cfg++) if (cfg->usecase_id =3D=3D uid) break; =20 - if (count =3D=3D sz || !cfg) + if (i =3D=3D sz) return ERR_PTR(-ENODEV); =20 - desc =3D kzalloc_obj(*desc); - if (!desc) - return ERR_PTR(-ENOMEM); - - desc->slice_id =3D cfg->slice_id; - desc->slice_size =3D cfg->max_cap; - - return desc; + return &drv_data->desc[i]; } EXPORT_SYMBOL_GPL(llcc_slice_getd); =20 @@ -4465,7 +4456,7 @@ EXPORT_SYMBOL_GPL(llcc_slice_getd); void llcc_slice_putd(struct llcc_slice_desc *desc) { if (!IS_ERR_OR_NULL(desc)) - kfree(desc); + return; } EXPORT_SYMBOL_GPL(llcc_slice_putd); =20 @@ -4541,7 +4532,8 @@ int llcc_slice_activate(struct llcc_slice_desc *desc) return -EINVAL; =20 mutex_lock(&drv_data->lock); - if (test_bit(desc->slice_id, drv_data->bitmap)) { + /* Already active; try to take another reference. */ + if (refcount_inc_not_zero(&desc->refcount)) { mutex_unlock(&drv_data->lock); return 0; } @@ -4555,7 +4547,8 @@ int llcc_slice_activate(struct llcc_slice_desc *desc) return ret; } =20 - __set_bit(desc->slice_id, drv_data->bitmap); + /* Set first reference */ + refcount_set(&desc->refcount, 1); mutex_unlock(&drv_data->lock); =20 return ret; @@ -4581,10 +4574,12 @@ int llcc_slice_deactivate(struct llcc_slice_desc *d= esc) return -EINVAL; =20 mutex_lock(&drv_data->lock); - if (!test_bit(desc->slice_id, drv_data->bitmap)) { + /* refcount > 1, drop one ref and we=E2=80=99re done. */ + if (refcount_dec_not_one(&desc->refcount)) { mutex_unlock(&drv_data->lock); return 0; } + act_ctrl_val =3D ACT_CTRL_OPCODE_DEACTIVATE << ACT_CTRL_OPCODE_SHIFT; =20 ret =3D llcc_update_act_ctrl(desc->slice_id, act_ctrl_val, @@ -4594,7 +4589,8 @@ int llcc_slice_deactivate(struct llcc_slice_desc *des= c) return ret; } =20 - __clear_bit(desc->slice_id, drv_data->bitmap); + /* Finalize: atomically transition 1 -> 0 */ + WARN_ON_ONCE(!refcount_dec_if_one(&desc->refcount)); mutex_unlock(&drv_data->lock); =20 return ret; @@ -4638,7 +4634,7 @@ static int _qcom_llcc_cfg_program(const struct llcc_s= lice_config *config, u32 attr1_val; u32 attr0_val; u32 max_cap_cacheline; - struct llcc_slice_desc desc; + struct llcc_slice_desc *desc; =20 attr1_val =3D config->cache_mode; attr1_val |=3D config->probe_target_ways << ATTR1_PROBE_TARGET_WAYS_SHIFT; @@ -4787,8 +4783,11 @@ static int _qcom_llcc_cfg_program(const struct llcc_= slice_config *config, } =20 if (config->activate_on_init) { - desc.slice_id =3D config->slice_id; - ret =3D llcc_slice_activate(&desc); + desc =3D llcc_slice_getd(config->usecase_id); + if (IS_ERR(desc)) + return PTR_ERR(desc); + + ret =3D llcc_slice_activate(desc); } =20 return ret; @@ -5101,18 +5100,18 @@ static int qcom_llcc_probe(struct platform_device *= pdev) =20 llcc_cfg =3D cfg->sct_data; sz =3D cfg->size; - - for (i =3D 0; i < sz; i++) - if (llcc_cfg[i].slice_id > drv_data->max_slices) - drv_data->max_slices =3D llcc_cfg[i].slice_id; - - drv_data->bitmap =3D devm_bitmap_zalloc(dev, drv_data->max_slices, - GFP_KERNEL); - if (!drv_data->bitmap) { + drv_data->desc =3D devm_kcalloc(dev, sz, sizeof(struct llcc_slice_desc), = GFP_KERNEL); + if (!drv_data->desc) { ret =3D -ENOMEM; goto err; } =20 + for (i =3D 0; i < sz; i++) { + drv_data->desc[i].slice_id =3D llcc_cfg[i].slice_id; + drv_data->desc[i].slice_size =3D llcc_cfg[i].max_cap; + refcount_set(&drv_data->desc[i].refcount, 0); + } + drv_data->cfg =3D llcc_cfg; drv_data->cfg_size =3D sz; drv_data->edac_reg_offset =3D cfg->edac_reg_offset; diff --git a/include/linux/soc/qcom/llcc-qcom.h b/include/linux/soc/qcom/ll= cc-qcom.h index 8243ab3a12a8..227125d84318 100644 --- a/include/linux/soc/qcom/llcc-qcom.h +++ b/include/linux/soc/qcom/llcc-qcom.h @@ -91,10 +91,12 @@ * struct llcc_slice_desc - Cache slice descriptor * @slice_id: llcc slice id * @slice_size: Size allocated for the llcc slice + * @refcount: Atomic counter to track activate/deactivate calls */ struct llcc_slice_desc { u32 slice_id; size_t slice_size; + refcount_t refcount; }; =20 /** @@ -152,11 +154,10 @@ struct llcc_edac_reg_offset { * @edac_reg_offset: Offset of the LLCC EDAC registers * @lock: mutex associated with each slice * @cfg_size: size of the config data table - * @max_slices: max slices as read from device tree * @num_banks: Number of llcc banks - * @bitmap: Bit map to track the active slice ids * @ecc_irq: interrupt for llcc cache error detection and reporting * @ecc_irq_configured: 'True' if firmware has already configured the irq = propagation + * @desc: Array pointer of pre-allocated LLCC slice descriptors * @version: Indicates the LLCC version */ struct llcc_drv_data { @@ -167,12 +168,11 @@ struct llcc_drv_data { const struct llcc_edac_reg_offset *edac_reg_offset; struct mutex lock; u32 cfg_size; - u32 max_slices; u32 num_banks; - unsigned long *bitmap; int ecc_irq; bool ecc_irq_configured; u32 version; + struct llcc_slice_desc *desc; }; =20 #if IS_ENABLED(CONFIG_QCOM_LLCC) --=20 2.34.1 From nobody Mon Apr 13 13:55:22 2026 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 11BBA2C0F91 for ; Fri, 6 Mar 2026 03:14:36 +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=1772766878; cv=none; b=shhS4GcRHy2b3hoE/JBUTWfHngDFnBytsUP7lGSABO46mzG91ca4Gl2vb735f/JIPKuLN2s1M5g/2dqGh0zLZAD92dYtKLtSzec95ctzQddepdtlwToRSbnzbfQjvFHlksk4mlkZJ3rHZSlGCjrsCTcaMyeJRKQxjUt43oF+SfI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772766878; c=relaxed/simple; bh=fRY6995pDVPrsgfEGntNtqtKE5aYXYzxVYUkdV2LGjE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Gd7iI2ZegNnpFmZU5Se9ZjgC0GjGbkUVpObQi8i55kQwAi1tIqH85KFfd2C0VhEat5RjZzqTDOo6O3ZLJoyqbqYWqxOfAP9viB5X4Qnxy8voMBtWVNfq6/CIEovfpC95hha/nqQ2TG+59bxPSysvniXay8Hkz8zGC/3sXElvNVs= 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=g6jIU8Tl; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=J4pmI3LA; 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="g6jIU8Tl"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="J4pmI3LA" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 625Kn7XT3139825 for ; Fri, 6 Mar 2026 03:14:35 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= CUND/+KqgfCDxCvWEudnxvEruQxwolLqNyciLlg2IxM=; b=g6jIU8TlIm1p2Qvi GgfnDeEVztMj15DAlvJmKQvqvX+MNv4CXRsJkPtflr9mxZ0TiybM9PrScwuyJw7K LPQNl8R/4tMkzjOWmtxNQGEe72/9DTRmXILpVJIPim3G0nd/zyXtibM1wVXLOq1N dC+TXTnKK7HmCPa+2OCsSdygh0ZJgTJj07Ri+eBWDBhymEJ51MnsbQrJ8bgkIQPg JN0OW5tEU9pTaQHub+mk43lu92ptX6bfKYryilHX0OVHdwWIiBjntmX92bJJwCrV UqN0dRLjoOWF4hmZILHk8Q2oJxqyB1yNmKFpYnwFUYSA99CCfrSERQwRb+JOKKpv GcYHMg== Received: from mail-dy1-f197.google.com (mail-dy1-f197.google.com [74.125.82.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cq1pk4bpt-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Mar 2026 03:14:35 +0000 (GMT) Received: by mail-dy1-f197.google.com with SMTP id 5a478bee46e88-2be27d4e3e5so13389605eec.1 for ; Thu, 05 Mar 2026 19:14:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772766857; x=1773371657; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=CUND/+KqgfCDxCvWEudnxvEruQxwolLqNyciLlg2IxM=; b=J4pmI3LAvEEDhoL8lgKeAZ1McH95w/czXWY/Fwc8zK2cIYvm4sR7Agy/hadTP9OF8k ocN/f+Meo7MDwd8ZCPpEMBs2+lJnYs2VPXSyy+1M86devHe8KI39jW+Ais1xCqeen4zC 2wr0wTRN4C0T/U5ETUbwO7wq5vqCu9TwYGpPUquOqASws0kzDwNFxhUajApGPAjJaamK jAklAYFCp6Mc/VB5p8aB4JkOUBBzRf6aGwdYKD7kwdQKtQBIexJX4jnbuloaRFPn9X5A Na0J5EZY8nrdnho2fbTNnOrhqLEzqdVJHnwl8SsZA5yU5ukuMIxvueBNJX1jtes8wlTI XVMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772766857; x=1773371657; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=CUND/+KqgfCDxCvWEudnxvEruQxwolLqNyciLlg2IxM=; b=ipKxaROJQ6AhV69qM8UqE6gdoRQ/xtj18m7C+I8J449lfHna/UnGFl8T2H3pJXkZJ7 bPO/uTWd5quAU6a7ew6OgKRS4XmOO3vcUGmKP/fT5mUXrhXB9jQC+ov2gD0CaQJ4SjA6 Xty8ZmRA2x1R70g4ZNyAaip5t3F82CdwVflT6xs+JzLj5KbTnJ4iq9FeZAVWZ6vGfWrk 9nfpsjlPrNLyOt4otEPY1z/jWwmCaKPApR07IFMeyv59hmSosyWj8vS013E9cOOEPz/H J+w/KwZXvibhENKk+epqRzcwll7m0UJllwjnMTsVbHL/cF8BcJn7hbtCUh+mraCMBxs4 I1jA== X-Forwarded-Encrypted: i=1; AJvYcCXET6n/Ro8tcru1q44OdMhKNsUBRkRYvRccFO5pZ+w9jZ952NNNqiFaqRquIxaqaLylL8VpRPtOoHdEPNw=@vger.kernel.org X-Gm-Message-State: AOJu0Yxqz7SzrtTXj/KLfA+gjgs5ku1OmtxOLtTMz/VW9ZMOhiTiY4AP lEpWgw3E7/IxUb2wdqeFjP5f8Db1S9ska4FRdLscINJJxHnUc6dI09xw4nY5Zg0+TfOk8WUU+lU pTiMCOinFAfrpXjzti/R2+apFtzY1ypiupCPc07klTQbeCKxS2gAeZSHDm09ePitsEYZx4DUknA == X-Gm-Gg: ATEYQzwE/sstJKXHZYg3TJ3pxKcwcPokFbI/+0s0TB2LcVB9DKxTMzrWzbqakiBxwm9 NXRPVhpDhM10RFrA/0KQcJcBs7Q9lgFjAw2oGZfmCLzZPQGb7IDReIBfizdPUvjy1J3QRlj/wtG 6ND7+5Y4AZ4U9qwc3v+lSUSGOa40o7RtPnJjc/RxCx+pwPSY1KML927nBQ6J4bAjfDlyRQIwZi+ Y8Ef31ChG6mBk9QpWR19PDp668y+XU4WbXWrma0Yw1Brd/SWcq9yApWIoYVVBMQjSyFHcx1Aoyg Bpe4wd06YM2ujjes1F2LK8sW65+1tbox0+L9wlwGtGN8JDite4kYUKD1aFIoc+3RdQFZdjFzmMS trEgAKM6TZ9Yh+QAfFe91oH5P3JfdXEVTwZuB5DpTGs432JWf/3fiDD0JPGBiBezYigMN/mUa0w == X-Received: by 2002:a05:7300:3724:b0:2be:126c:e335 with SMTP id 5a478bee46e88-2be4de98aa4mr303403eec.10.1772766856718; Thu, 05 Mar 2026 19:14:16 -0800 (PST) X-Received: by 2002:a05:7300:3724:b0:2be:126c:e335 with SMTP id 5a478bee46e88-2be4de98aa4mr303389eec.10.1772766856074; Thu, 05 Mar 2026 19:14:16 -0800 (PST) Received: from hu-fruiz-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2be4f82b1d3sm197839eec.11.2026.03.05.19.14.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Mar 2026 19:14:15 -0800 (PST) From: Francisco Munoz Ruiz Date: Thu, 05 Mar 2026 19:12:06 -0800 Subject: [PATCH 2/2] soc: qcom: llcc: Use guards for mutex handling 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: <20260305-external_llcc_changes1set-v1-2-6347e52e648e@oss.qualcomm.com> References: <20260305-external_llcc_changes1set-v1-0-6347e52e648e@oss.qualcomm.com> In-Reply-To: <20260305-external_llcc_changes1set-v1-0-6347e52e648e@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Francisco Munoz Ruiz , Unnathi Chalicheemala , Konrad Dybcio X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1772766853; l=2371; i=francisco.ruiz@oss.qualcomm.com; s=20260305; h=from:subject:message-id; bh=yd2tvj1vkEgWnWkgYzbTmmIfhhcbMrW8XBX8Xkv+080=; b=bpib13fbS79o02D0uzDtPYSent/2VfnH2Z0lLgkk1jUglgdpju+rZNdXMXdBgrUNjxgvnQJQw 3xmfJiyo0DDAf6rgHE9mqmk07pBiVS7lH87/eduPKuOtKrsuXt+GHBd X-Developer-Key: i=francisco.ruiz@oss.qualcomm.com; a=ed25519; pk=Gcv2CX7iHozjnQ4oK+9fINmBiQTmVC4SpaZzoM63CHE= X-Proofpoint-ORIG-GUID: Rlackv8AlzUO2DbaXSay3jqmDlc_7smT X-Authority-Analysis: v=2.4 cv=Gu9PO01C c=1 sm=1 tr=0 ts=69aa469b cx=c_pps a=Uww141gWH0fZj/3QKPojxA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=VvdJ20gCDTMsAWRwTQIA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=PxkB5W3o20Ba91AHUih5:22 X-Proofpoint-GUID: Rlackv8AlzUO2DbaXSay3jqmDlc_7smT X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDAyOSBTYWx0ZWRfX9RtY1T1eBPnF HCxNaPXzH+MoRY0TmQLgkF+vI2rz9bO02SOvtckebQd/qWZFAtB5BpEaUHqxt5HhhwlS8FrY1Ue xotmgbFSfaht2JhiPt/QUTSnvHoretHpAjEmFq9aasjCsg1hcepKCotqLDuLqjlXIq9eJfqtpB9 fSgkiXVZe72zXJuA3hYgB2pGthV65u8ra9xqVljhrNRabrRSb45cIEv5wodkzzl87sw2MqubMry WzYPLqnWcgYy5ESAPlSp0hsuh+VYunWgHAoCgiDuAHad7OjjLjUZ7lHU6Ch1IELLSjASnBuU8Q7 mBm8QV/tnhy0yeiqhpIPVU3lTpBIosE7NFiO6UqtkbIB6B+EPlE+ioeZNcF9PnqeU7V/OEoKAbT qlWNMcwnD8Yd9PWbQffobjmlMxUlGfD4xGJ6nsvFdeWPnoK/lKFhNGpzGeoosP0rQrzFYp6U/zZ wXseY/iXIgGY05BspWg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_01,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 lowpriorityscore=0 suspectscore=0 phishscore=0 adultscore=0 impostorscore=0 clxscore=1015 priorityscore=1501 bulkscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603060029 From: Unnathi Chalicheemala Replacing manual lock/unlock pairs with guard() removes the need to think about unlocking entirely and keeps the function trivially structured. Signed-off-by: Unnathi Chalicheemala Signed-off-by: Francisco Munoz Ruiz Reviewed-by: Konrad Dybcio --- drivers/soc/qcom/llcc-qcom.c | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c index 2e7f05df93a6..f859d91460c6 100644 --- a/drivers/soc/qcom/llcc-qcom.c +++ b/drivers/soc/qcom/llcc-qcom.c @@ -4531,27 +4531,21 @@ int llcc_slice_activate(struct llcc_slice_desc *des= c) if (IS_ERR_OR_NULL(desc)) return -EINVAL; =20 - mutex_lock(&drv_data->lock); + guard(mutex)(&drv_data->lock); /* Already active; try to take another reference. */ - if (refcount_inc_not_zero(&desc->refcount)) { - mutex_unlock(&drv_data->lock); + if (refcount_inc_not_zero(&desc->refcount)) return 0; - } =20 act_ctrl_val =3D ACT_CTRL_OPCODE_ACTIVATE << ACT_CTRL_OPCODE_SHIFT; - ret =3D llcc_update_act_ctrl(desc->slice_id, act_ctrl_val, DEACTIVATE); - if (ret) { - mutex_unlock(&drv_data->lock); + if (ret) return ret; - } =20 /* Set first reference */ refcount_set(&desc->refcount, 1); - mutex_unlock(&drv_data->lock); =20 - return ret; + return 0; } EXPORT_SYMBOL_GPL(llcc_slice_activate); =20 @@ -4573,27 +4567,21 @@ int llcc_slice_deactivate(struct llcc_slice_desc *d= esc) if (IS_ERR_OR_NULL(desc)) return -EINVAL; =20 - mutex_lock(&drv_data->lock); + guard(mutex)(&drv_data->lock); /* refcount > 1, drop one ref and we=E2=80=99re done. */ - if (refcount_dec_not_one(&desc->refcount)) { - mutex_unlock(&drv_data->lock); + if (refcount_dec_not_one(&desc->refcount)) return 0; - } =20 act_ctrl_val =3D ACT_CTRL_OPCODE_DEACTIVATE << ACT_CTRL_OPCODE_SHIFT; - ret =3D llcc_update_act_ctrl(desc->slice_id, act_ctrl_val, ACTIVATE); - if (ret) { - mutex_unlock(&drv_data->lock); + if (ret) return ret; - } =20 /* Finalize: atomically transition 1 -> 0 */ WARN_ON_ONCE(!refcount_dec_if_one(&desc->refcount)); - mutex_unlock(&drv_data->lock); =20 - return ret; + return 0; } EXPORT_SYMBOL_GPL(llcc_slice_deactivate); =20 --=20 2.34.1