From nobody Fri Jul 24 22:57:06 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 696E7366049 for ; Wed, 22 Jul 2026 16:12:25 +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=1784736746; cv=none; b=A96OuaiCb/rT8ywbahhYJG6IikPH+3VCbhlZg0fKrt9rZkYEnZdlvL0PjOyi5I37cKcW989bYJhcxC/YMK4JOwVdwuUiDmR/tDu6mSjbDwOqA58dyil+4uutIUpRw0pU0dyJO21b4QG2fGhY6QPVIyfHBSIOOT/sllOjeEXAOk8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784736746; c=relaxed/simple; bh=sdxJeDHkrQlTySp7RQqlaKWFt8llLd9XMIvoTxxdgaQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=dk5D15wto1ET3q4hOtZ0QAEnQCJLuZHwDAUDnJkmILwm1daNF+eS2f8xLNILm4HqpxSQb6VYc5wLvbI3tfOkqXYeKOLMVLnJT2cMPz30e4OLYbcRvGoaISIff/BlijlPCFihCJc3vG3WNfOrAU6Pw+Jc6bZCnmWRFB9THvCQSSM= 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=CvfG2xMv; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cTwnOJzq; 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="CvfG2xMv"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cTwnOJzq" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66MFXtFx1146359 for ; Wed, 22 Jul 2026 16:12:24 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=qcppdkim1; bh=ThOsP0hEyflEn62fng4lb9 iPMnmI2bEXMNOsBjKnQqY=; b=CvfG2xMv2zJLMXjcIIqxwESoAveJfaeoCZPbVK NnmGmr+OHcNBr3Dh+7ZWOaCD+70DiNgYzqIk37oSbBtBbvvItW22mwtGJc6D96pz f3EeKjlkaMtQIzpNzUfz9h9MYNchTp+tL90OLPFJcjnmQEghybCsfLlNIiJxWHsB GvXhuNmtVaasog6MWovWQeZL+Pc7jw05ExvaOdjJTruf7WE+DGri+WkGoADdw3Ld W3kieJIDf3zrfEAVUjDe9fYffnW8r7Jv7BsW9eHjHGrsogXkQczqkLZ2v5uB3tZL Vs2qy2cFiimhRvrEE9lecWAQFtIMDK+R2pzdGAswg4OzxYTA== 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 4fjntn34mr-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 22 Jul 2026 16:12:24 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2cc640dfde3so108893525ad.1 for ; Wed, 22 Jul 2026 09:12:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784736743; x=1785341543; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:content-type :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=ThOsP0hEyflEn62fng4lb9iPMnmI2bEXMNOsBjKnQqY=; b=cTwnOJzq4WeiftNHifOECQhgVx6vcONJaIVAPpKBbygHZbEDfFwQVYP9Czl01iYJ1B IypFIRE9ylNM/DlSmSJh8CtU0hExrJPx9J0mQ6nGVylxSgokyOu3nhpMsDfoLb5BTa1g pZnI6WUU2Ta/wHFzCBpOpw/huP0DZlBsv+X/DzRfNVWoiHqDrowznNlgIlphUMq5k3Eo /E+QwUMVMRf+EfGwOIsMrkk8C03ySYQkl58oHaMHqKZLvIT4waQcQvGXwcIYl+42YEIM 8KhjHLMhsjog7K3Rk0wnn2ZRQA8qW24dISByGaI/eDi9ZI2v4ylBP6SRebAuO6b1E1uY Qf2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784736743; x=1785341543; h=cc:to:message-id:content-transfer-encoding:content-type :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=ThOsP0hEyflEn62fng4lb9iPMnmI2bEXMNOsBjKnQqY=; b=oeYpe855sS2HbmhJFYf21p7jnIYMUP2oc3A1hF7j8Skme7pXB/0fQcktEFUAXRX7O8 Y/c8WBXwylGmyk4D1Jpfz/OsfJsynJYTmN7+kTq3E5i12uTwoblf76kHqPnpypund0Mc k3twz3EbvLrUJpaZRmRM0C9BrmHhPkMO8RGnBOg8g5EhF74joI+p3zb415eWEULrcQ84 gTRGAPqxEujDBY8gcH7/Jd1OaWnib4LgX6KWvvAsK7zjX3kPr5+txPmonD1oEzzFpFrV up5fL9SjWYCA6Ygzutkk/awgT6LWuf8akbtjeN/VK7uhCWDPGM/2UxJ89CPAP7VKh0AR /tKA== X-Forwarded-Encrypted: i=1; AHgh+Roh6+bec3m+4s8jkODXNq69bO9d4u/NfKPfc8BJjSOP3n7xp+0GqGoWLoaubIDAvV+/aE2gWZVXtLHBUV8=@vger.kernel.org X-Gm-Message-State: AOJu0Yzp7F+CaEldxSsqYLCwhKxGH32cfwOL09x9Pq6qyhUIo4WaNkfG 5vmcjNRnHULcb6YR0hMjvcCM1UF+jxmDbJu2fRJ0Bn0V+fsiCQVKtBYsXU1EOwCliePFI4fubbz YZ0vRyhDo8rS041DZ33hOO1iEtTd0gE4TKRaEBc4J63E+yLA0zzRRmgbtPFXU2hwzGIo= X-Gm-Gg: AR+sD13u5puRhyTTUQqJi+W56z8A+meEJOH5XF1nLmM7KDg1M3HkQ7B2HVI+1ZmSD8A SZsheEa8w3VCws5RJ98ITjVirdj/aSafFScpFwMjQcq4SPhWx22KjLnB5yt9GRAb2lc4yobkT1/ 4P5fVQpfvpmS6St7IlfcZi5CZcKP9jYyDq5W49U09dea0tPXLQeeYdTKrL4GpO0XJii9zHTOqIS 09DX9mmb0w94PQ+ldAsGcbalfcbZeJBSjtHnINzZ9HpfZJZ4iJLhQEngcRlhH+nA2JTWKHDOElp GPv6wefd9PTs7qKOMfCCLXF75Leuc4mZ8U39/YSqPswQBwWgnO0Pvzi3VfRsZfJP6LseQoUMXfG 3Oc29T8gYqlduDwY94zs= X-Received: by 2002:a17:903:1a43:b0:2cc:aa36:c04c with SMTP id d9443c01a7336-2cf348368abmr274046885ad.1.1784736743079; Wed, 22 Jul 2026 09:12:23 -0700 (PDT) X-Received: by 2002:a17:903:1a43:b0:2cc:aa36:c04c with SMTP id d9443c01a7336-2cf348368abmr274046245ad.1.1784736742427; Wed, 22 Jul 2026 09:12:22 -0700 (PDT) Received: from [10.213.109.130] ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3147e088d3fsm11058985eec.25.2026.07.22.09.12.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 09:12:22 -0700 (PDT) From: Jishnu Prakash Date: Wed, 22 Jul 2026 21:42:07 +0530 Subject: [PATCH v2] usb: typec: ucsi: ucsi_glink: Prevent suspend during UCSI notification 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: <20260722-ucsi_glink_wakeup-v2-1-b43dee56df24@oss.qualcomm.com> X-B4-Tracking: v=1; b=H4sIANbrYGoC/32Nyw6CMBREf4V0bUmpsRVX/ochpLRXuPIothQ1h H+34N7NJCeZObMQDw7Bk0uyEAczerRDBH5IiG7UUANFE5lwxgWTGaNBeyzrDoe2fKkWwkiZBFE ZfuQnUZG4Gx3c8b07b8WPfageoKdNtDUa9JN1n/10zrbeP/+c0YxKk0tQgp9Nzq/W+/QZVKdt3 6cxSLGu6xeHWv/2ywAAAA== X-Change-ID: 20260710-ucsi_glink_wakeup-07e6bd23256b To: Heikki Krogerus , Greg Kroah-Hartman Cc: Dmitry Baryshkov , Konrad Dybcio , Deepak Kumar Singh , Kamal Wadhwa , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Jishnu Prakash X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784736739; l=3235; i=jishnu.prakash@oss.qualcomm.com; s=20251014; h=from:subject:message-id; bh=sdxJeDHkrQlTySp7RQqlaKWFt8llLd9XMIvoTxxdgaQ=; b=YbmzvS+YJI7MyokWzk07itDjvIOGZda1ZUrePyTorNadm72Ml0t1FHPzgiEcGSfoAQX+y/AxJ B0xN4/MXUtyC9mOgc8CzdM2YMp/LXJbR656IoGJY4IfMXuGaSosnQI/ X-Developer-Key: i=jishnu.prakash@oss.qualcomm.com; a=ed25519; pk=g89pXdLVwRjdTeQ+uX1QzvBO346E3hQAc1N7fcTXgmk= X-Authority-Analysis: v=2.4 cv=AJsSZ1gA c=1 sm=1 tr=0 ts=6a60ebe8 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=VwQbUJbxAAAA:8 a=COk6AnOGAAAA:8 a=bC-a23v3AAAA:8 a=EUspDBNiAAAA:8 a=0NJbmkjOm9SxVZ9QAlgA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 a=TjNXssC_j7lpFel5tvFf:22 a=FO4_E8m0qiDe52t0p3_H:22 X-Proofpoint-GUID: qunqcX329puSzP9STKjOTPiJt8rcqCbe X-Proofpoint-ORIG-GUID: qunqcX329puSzP9STKjOTPiJt8rcqCbe X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDE1OSBTYWx0ZWRfXzk+HqTvtN1KU urwHD6iER9hC9HXy7KfBELKGoCCV0cVPX8TbOtkaEhx0K9b/tKRycCw+xQUSDMyc8TA/uLJlgaM J/jPpBfJaFr53w1v2U/apytDYIUG770= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDE1OSBTYWx0ZWRfX5TH2N/XnZEAw LTMihUMjWAUS2eIY7HsKASOGmFpurxo8qj7CTHr8bbxKxN7edmgGIr54xpHo+tjcfnHaB6MYMWA BHEMVkoDsT21jOnUco4nn2SzHwWRQJa/+r9/EXUvnjjgGqg8MpvpZ2zqx+msA95ppV1a539BbSZ yCQjWQkj/pAjKg1sK3jtti3ykUDXx989wdfV2ZyRYNGkO37LyOZlSbnqdZ2uH6DZVqN837JAhiM bJjrxs5GqFMZCeflx3q9l6NAtqqVpEp9zsfNn2C1zlqW7tS1bcneGFqF1suuDV+eiUX6FxVeFd3 m1auhxfUGUqEIcAhGaiS17nGfQ/tsZZJAtIXw2ls5k3M7gIkbMp6D+jDOMD0RyHONMJYQ4BvqvU 57iGlPPv9NRxJo6EddpgVCvbZry35EriRUQnwvJYQZlkn5DpIEWLZFrWj8D9oDGuACNSqDJHXE0 M9zdUBwa8u4XYPbOG2Q== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_04,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 clxscore=1015 phishscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 priorityscore=1501 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220159 When the system is suspended and a UCSI event arrives (such as USB plug-in), the GLINK interrupt (with IRQF_NO_SUSPEND flag) fires and it eventually cal= ls the pmic_glink_ucsi_callback(), which schedules notify_work to handle the connector change. However, since no wakeup source is held, the system can re-enter suspend soon after the interrupt handler returns, before notify_wo= rk has completed running, and the USB plug-in event would not be handled. There was an earlier attempt to address this at the GLINK driver level, by making the GLINK interrupt wakeup-capable, ("rpmsg: glink: Make glink smem interrupt wakeup capable") [1], but upstream reviewers suggested a different approach, preferring wakeup logic to be handled in the client dri= ver. To avoid losing UCSI notifications in this way, register ucsi_glink as a wakeup-capable device in the probe, and call pm_wakeup_dev_event() with hard=3Dtrue before scheduling notify_work. The hard wakeup aborts any in-progress suspend, and the timed wakeup source keeps the system awake long enough for the notify_work call to run. [1] https://lore.kernel.org/all/20240603073648.3475123-1-quic_deesin@quicin= c.com/ Signed-off-by: Jishnu Prakash --- Changes in v2: - Replaced pm_wakeup_ws_event() with pm_wakeup_dev_event() to avoid compila= tion error on devices with CONFIG_PM_SLEEP disabled. - Link to v1: https://patch.msgid.link/20260710-ucsi_glink_wakeup-v1-1-7d97= ea628d92@oss.qualcomm.com --- drivers/usb/typec/ucsi/ucsi_glink.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/usb/typec/ucsi/ucsi_glink.c b/drivers/usb/typec/ucsi/u= csi_glink.c index 12e07b9fe622..1643d6756127 100644 --- a/drivers/usb/typec/ucsi/ucsi_glink.c +++ b/drivers/usb/typec/ucsi/ucsi_glink.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -26,6 +27,12 @@ #define UC_UCSI_WRITE_BUF_REQ 0x12 #define UC_UCSI_USBC_NOTIFY_IND 0x13 =20 +/* + * Wakeup timeout to allow USB event notification processing to + * complete before device suspends. + */ +#define UCSI_GLINK_WAKEUP_TIMEOUT_MS 50 + struct ucsi_read_buf_req_msg { struct pmic_glink_hdr hdr; }; @@ -342,6 +349,7 @@ static void pmic_glink_ucsi_callback(const void *data, = size_t len, void *priv) pmic_glink_ucsi_write_ack(ucsi, data, len); break; case UC_UCSI_USBC_NOTIFY_IND: + pm_wakeup_dev_event(ucsi->dev, UCSI_GLINK_WAKEUP_TIMEOUT_MS, true); schedule_work(&ucsi->notify_work); break; } @@ -401,6 +409,8 @@ static int pmic_glink_ucsi_probe(struct auxiliary_devic= e *adev, ucsi->dev =3D dev; dev_set_drvdata(dev, ucsi); =20 + device_init_wakeup(dev, true); + INIT_WORK(&ucsi->notify_work, pmic_glink_ucsi_notify); INIT_WORK(&ucsi->register_work, pmic_glink_ucsi_register); init_completion(&ucsi->read_ack); --- base-commit: 1590cf0329716306e948a8fc29f1d3ee87d3989f change-id: 20260710-ucsi_glink_wakeup-07e6bd23256b Best regards, -- =20 Jishnu Prakash