From patchwork Sat Mar 25 16:52:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 667040 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 67563C6FD1F for ; Sat, 25 Mar 2023 16:52:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231753AbjCYQwh (ORCPT ); Sat, 25 Mar 2023 12:52:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41256 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231555AbjCYQwe (ORCPT ); Sat, 25 Mar 2023 12:52:34 -0400 Received: from mail-pj1-x102b.google.com (mail-pj1-x102b.google.com [IPv6:2607:f8b0:4864:20::102b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0D9A71043B for ; Sat, 25 Mar 2023 09:52:33 -0700 (PDT) Received: by mail-pj1-x102b.google.com with SMTP id lr16-20020a17090b4b9000b0023f187954acso4430896pjb.2 for ; Sat, 25 Mar 2023 09:52:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1679763153; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=e7SFhVIy9FiHRYuAVmr5oCzy1fSTsBZJqJuUJjAhwMU=; b=runkUjvi440oz3iTpTbSsu3XyBNpxPoC2CRukScXahnGwh0GvHSUdFC97vwWCNuzCw ys6qdo+HVEVTcHPDvOOQxyr5cHT/J8ibb7o/vUIEwmndQfIQ/dQ10fWuFa2PdIc7WxSt c+C6/U02ZOt47SQR7m90y2s5CL9ssXA1C28j5G1m/eK/n7VNjtQ7o3Gj51prlf0RFW+n 1ALXZ0h4VfqebnB+cHsqrj4THYOEWfZoO4XZCTSEgs4VFgbicvN9iRQ1rCL4ezP/vLjr SlSMtlG86niVpayWoCx572w1B05zFY5lBBTDBKF86CtEvp04knbjG37kDzVoaa9cSW8c rrKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679763153; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=e7SFhVIy9FiHRYuAVmr5oCzy1fSTsBZJqJuUJjAhwMU=; b=tehb2OjF6wbLGp4zZ+Jo2PCXgoNZrVDoaHkYM2xy/M50lmDSQOxjKd+B8O9+L9RUG9 w5hCzl0M6Qeph6YfLkEiyIeXh4hYcTsjva1muOqEcp8/2ex+kAhREWVuxPQWubemJNI9 UTNBVc19CUGHizysLKSEYCNCt0BqX7FAEX869nb9nrvU6EgoDwz1lcw2Af6WGlQewLju zXe9gIja+gDlj5iWKONGYbcNx5+FTDThhph3WYy9ICsVNvvUh6ludnALTYO/2RZYsnVy YEebmuhni6y6oPPG/GOeYXV6DuKru/VTIhODRbA+PwhW49DJSQ71VnSmC1zrv4PayxS5 vtUg== X-Gm-Message-State: AAQBX9feoqpH0JX66PJxmIT/ma4xkoaqda/XOb/dZvqBf6gbhkYOyGsf USKfOl9AC4pRp7YfZravi2A3 X-Google-Smtp-Source: AKy350ZjCXmBhgZ6Bl0DVFjZswxej9wl1wM/D1SPCFgRUkhdxleFS+0AWBrkte51z7VOJCKZWNas2A== X-Received: by 2002:a17:902:f34d:b0:1a1:cef2:accf with SMTP id q13-20020a170902f34d00b001a1cef2accfmr4965302ple.30.1679763152728; Sat, 25 Mar 2023 09:52:32 -0700 (PDT) Received: from localhost.localdomain ([117.217.184.99]) by smtp.gmail.com with ESMTPSA id p5-20020a1709026b8500b001a1aeb3a7a9sm14889787plk.137.2023.03.25.09.52.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Mar 2023 09:52:32 -0700 (PDT) From: Manivannan Sadhasivam To: andersson@kernel.org, Thinh.Nguyen@synopsys.com, gregkh@linuxfoundation.org, mathias.nyman@intel.com Cc: konrad.dybcio@linaro.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, linux-arm-msm@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Manivannan Sadhasivam , stable@vger.kernel.org Subject: [PATCH 1/5] arm64: dts: qcom: sc8280xp: Add missing dwc3 quirks Date: Sat, 25 Mar 2023 22:22:13 +0530 Message-Id: <20230325165217.31069-2-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230325165217.31069-1-manivannan.sadhasivam@linaro.org> References: <20230325165217.31069-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Add missing quirks for the USB DWC3 IP. Cc: stable@vger.kernel.org # 5.20 Fixes: 152d1faf1e2f ("arm64: dts: qcom: add SC8280XP platform") Signed-off-by: Manivannan Sadhasivam --- arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi index 0d02599d8867..266a94c712aa 100644 --- a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi +++ b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi @@ -3040,6 +3040,13 @@ usb_0_dwc3: usb@a600000 { iommus = <&apps_smmu 0x820 0x0>; phys = <&usb_0_hsphy>, <&usb_0_qmpphy QMP_USB43DP_USB3_PHY>; phy-names = "usb2-phy", "usb3-phy"; + snps,hird-threshold = /bits/ 8 <0x0>; + snps,usb2-gadget-lpm-disable; + snps,is-utmi-l1-suspend; + snps,dis-u1-entry-quirk; + snps,dis-u2-entry-quirk; + snps,has-lpm-erratum; + tx-fifo-resize; port { usb_0_role_switch: endpoint { @@ -3100,6 +3107,13 @@ usb_1_dwc3: usb@a800000 { iommus = <&apps_smmu 0x860 0x0>; phys = <&usb_1_hsphy>, <&usb_1_qmpphy QMP_USB43DP_USB3_PHY>; phy-names = "usb2-phy", "usb3-phy"; + snps,hird-threshold = /bits/ 8 <0x0>; + snps,usb2-gadget-lpm-disable; + snps,is-utmi-l1-suspend; + snps,dis-u1-entry-quirk; + snps,dis-u2-entry-quirk; + snps,has-lpm-erratum; + tx-fifo-resize; port { usb_1_role_switch: endpoint { From patchwork Sat Mar 25 16:52:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 667039 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1A70EC6FD1F for ; Sat, 25 Mar 2023 16:52:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231801AbjCYQwv (ORCPT ); Sat, 25 Mar 2023 12:52:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41754 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231861AbjCYQwr (ORCPT ); Sat, 25 Mar 2023 12:52:47 -0400 Received: from mail-pj1-x1031.google.com (mail-pj1-x1031.google.com [IPv6:2607:f8b0:4864:20::1031]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EF31A1114C for ; Sat, 25 Mar 2023 09:52:41 -0700 (PDT) Received: by mail-pj1-x1031.google.com with SMTP id q102so3996425pjq.3 for ; Sat, 25 Mar 2023 09:52:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1679763161; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TcX2JepRhMauvmr6OvXDCUj4iLMZOWFsRt6c9RIivk4=; b=fzj4/I9qLXRnvj7x/cSvkpKDbmzXx4iT+xGtrmzPKfNZ2lzDOyKQvi7nnKIoeMxU41 OF0ifz+m6KCRX4sN20nbapx6RwsDDa2yK4g3rCiS9+HWDHNS8teclXPDxLBq6rm2G6p/ cy02YcyeiFj/VtUf4XKFKIAFv+qAr7OD6LoXwQ1DFbM9IwS2VxcGA2WR/3YqmnFm/WWZ IBxJ8AfYmP2C1syUJRUl7q/3ZrmNVpJlN0EHW84cvKdwHV8euhVc8nDjQoZDDjgR96ak zCmwDsnstpG4d+Y7Fw1r7TJNxlQQxH3LakqYT4JdtqyCcXh000C6n4M8CkgprS99qCdk QXiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679763161; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TcX2JepRhMauvmr6OvXDCUj4iLMZOWFsRt6c9RIivk4=; b=y/aO8sGhZ9nG8+IcciYZC9CJa4yHBpvYwsgfBIGz30nTedzRUPh70iqZktaAXs9dCi OLXn3pT4AsSmvbnz/v8s5xH69OkGadSwCF85pXAz0vcDhkjVwoAYj6beNru0r+TBCtPp MS+Xi2mS4k9bzec4aNMsq5zqeNZEBHIEwkDTtBoCNtvJE+B9L7jeOHhdX4ehdWE50/t5 QeMTwvp0OhzWrp0G0vbg3wB+A1SQshUGjs0oWmmiwwGyB64lhw5iEg5hxqW3FtxUU3Fg SaA4BCvn5AywNAZrjW9SdLqEAigXgtAh/vDqt/dA9TzC/EdzceW6Rrx9zJZ5x6tUVLf4 TLNg== X-Gm-Message-State: AAQBX9ep1JXwQ4njrLCv7GEoIQhuL9BJlmFVYb8UHOGgnaWCWkG8S4m7 NjOj5WRghB6SzFueUelZYqEX X-Google-Smtp-Source: AKy350a6Ilq0dGzubTifmDh9N4IWV2U2DaDP7a83e4+5QLCiub4TcmUrNDEuwyhnzoG1rf5qNMR0jQ== X-Received: by 2002:a17:903:2311:b0:1a0:7584:f468 with SMTP id d17-20020a170903231100b001a07584f468mr8014843plh.0.1679763161267; Sat, 25 Mar 2023 09:52:41 -0700 (PDT) Received: from localhost.localdomain ([117.217.184.99]) by smtp.gmail.com with ESMTPSA id p5-20020a1709026b8500b001a1aeb3a7a9sm14889787plk.137.2023.03.25.09.52.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Mar 2023 09:52:40 -0700 (PDT) From: Manivannan Sadhasivam To: andersson@kernel.org, Thinh.Nguyen@synopsys.com, gregkh@linuxfoundation.org, mathias.nyman@intel.com Cc: konrad.dybcio@linaro.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, linux-arm-msm@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH 3/5] usb: dwc3: qcom: Fix null ptr access during runtime_suspend() Date: Sat, 25 Mar 2023 22:22:15 +0530 Message-Id: <20230325165217.31069-4-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230325165217.31069-1-manivannan.sadhasivam@linaro.org> References: <20230325165217.31069-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org When runtime PM is enabled during probe, the PM core suspends this driver before probing the dwc3 driver. Due to this, the dwc3_qcom_is_host() function dereferences the driver data of the dwc platform device which will only be set if the dwc driver has been probed. This causes null pointer dereference during boot time. So let's add a check for dwc drvdata in the callers of dwc3_qcom_is_host() such as dwc3_qcom_suspend() and dwc3_qcom_resume() functions. There is no need to add the same check in another caller dwc3_qcom_resume_irq() as the wakeup IRQs will only be enabled at the end of dwc3_qcom_suspend(). Note that the check should not be added to dwc3_qcom_is_host() function itself, as there is no provision to pass the context to callers. Fixes: a872ab303d5d ("usb: dwc3: qcom: fix use-after-free on runtime-PM wakeup") Signed-off-by: Manivannan Sadhasivam --- drivers/usb/dwc3/dwc3-qcom.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c index 959fc925ca7c..bbf67f705d0d 100644 --- a/drivers/usb/dwc3/dwc3-qcom.c +++ b/drivers/usb/dwc3/dwc3-qcom.c @@ -411,10 +411,11 @@ static void dwc3_qcom_enable_interrupts(struct dwc3_qcom *qcom) static int dwc3_qcom_suspend(struct dwc3_qcom *qcom, bool wakeup) { + struct dwc3 *dwc = platform_get_drvdata(qcom->dwc3); u32 val; int i, ret; - if (qcom->is_suspended) + if (qcom->is_suspended || !dwc) return 0; val = readl(qcom->qscratch_base + PWR_EVNT_IRQ_STAT_REG); @@ -444,10 +445,11 @@ static int dwc3_qcom_suspend(struct dwc3_qcom *qcom, bool wakeup) static int dwc3_qcom_resume(struct dwc3_qcom *qcom, bool wakeup) { + struct dwc3 *dwc = platform_get_drvdata(qcom->dwc3); int ret; int i; - if (!qcom->is_suspended) + if (!qcom->is_suspended || !dwc) return 0; if (dwc3_qcom_is_host(qcom) && wakeup) From patchwork Sat Mar 25 16:52:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 667038 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BF286C6FD1F for ; Sat, 25 Mar 2023 16:53:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231873AbjCYQxM (ORCPT ); Sat, 25 Mar 2023 12:53:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42836 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231819AbjCYQxG (ORCPT ); Sat, 25 Mar 2023 12:53:06 -0400 Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 98E531116D for ; Sat, 25 Mar 2023 09:52:50 -0700 (PDT) Received: by mail-pl1-x62a.google.com with SMTP id c18so4525039ple.11 for ; Sat, 25 Mar 2023 09:52:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1679763170; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=o5VOIjGylY9WGOefinV0JBeKQN6rOGlg5sVMpRj7URM=; b=b0ovAW9+SEAjtc+peHfDLX5rtcX8AXXRjl4iscRRow+ZVnuPzr6BDeLXCiuIR9Ma0q DPnFGtD4KWJIeUK6mRnggjQEzN6V/aF0Y6JN6ntXikumKJIV7ZdBu9vAQqiKsR012JVR xJRGO52FVXyMRzVuZK9DkFcatmALBnFLj7zhDp6XHSXwppQaKgIfQFqbcpHebk5ucMJ/ 67dwnIKFW4/Eaqoq0/JoOe971XslCX531qORSEm58DdJ2K0E/278Yf4oULn2wBTNJXdW 49Nk7coEkY3z4mzeMLKVoxM4bgIV5HqI1Sk/T5YUXF0Wq4tFINMgLOecOnde+bgghH2U bWvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679763170; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=o5VOIjGylY9WGOefinV0JBeKQN6rOGlg5sVMpRj7URM=; b=7cmKVfVPIrY9zbUZB7DGUR2G88ESpabUaO2TJdgwjj6+pJ9cBwhAq4+ZdmRIwtZHOJ LpKkDD+KzvLn4toRLFdQR09HUGWL0c6pclQ4Wl+qXtP1VBIgvaE7QBCMwmSJoLiW0/k1 aXJ6TFWGJCRoNexH6rt+Tyaf6a4PPr38OZJjYfuFZDCIUVbsXkI5SSg+Ce0eqc14Gvmj YgknIqs6yrNvmrWeJG1w+BBaZc5erhfWPstmtCeOMWirgB7AGNCGwodgWPaKfIXwjVbT jN5CUQBwTyV0wfWTysy0CQw1xkEBxqnFetkvMWM6ovHQqh4zYIfOClv0GGbZRF9kgdYA x5FQ== X-Gm-Message-State: AAQBX9ceHyBpbSB5DjgC7WStyMRNt1Fnhej8ekEiVfOyTppsAih8Rapy UbjfZvPCtmApn8qi9j6U8HZP X-Google-Smtp-Source: AKy350aXEhO03eb00DeoR6EXEXBTy8f+8NvpxkraBlsigoQlOsbG0I7JVtpRge3Gl5Z0UyYcRDWcCg== X-Received: by 2002:a17:902:d2cb:b0:1a1:db10:7ba3 with SMTP id n11-20020a170902d2cb00b001a1db107ba3mr9473748plc.2.1679763170186; Sat, 25 Mar 2023 09:52:50 -0700 (PDT) Received: from localhost.localdomain ([117.217.184.99]) by smtp.gmail.com with ESMTPSA id p5-20020a1709026b8500b001a1aeb3a7a9sm14889787plk.137.2023.03.25.09.52.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Mar 2023 09:52:49 -0700 (PDT) From: Manivannan Sadhasivam To: andersson@kernel.org, Thinh.Nguyen@synopsys.com, gregkh@linuxfoundation.org, mathias.nyman@intel.com Cc: konrad.dybcio@linaro.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, linux-arm-msm@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH 5/5] usb: dwc3: qcom: Allow runtime PM Date: Sat, 25 Mar 2023 22:22:17 +0530 Message-Id: <20230325165217.31069-6-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230325165217.31069-1-manivannan.sadhasivam@linaro.org> References: <20230325165217.31069-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org dwc3-qcom driver is capable of doing runtime PM on its own, but currently it requires userspace intervention to enable it. But there is no harm in letting the driver to enable runtime PM on its own. So let's get rid of the "pm_runtime_forbid()" and make sure that the dependency is maintained with child devices using "pm_suspend_ignore_children(dev, false)". Also during remove(), the device needs to be waken up first if it was runtime suspended. Finally, pm_runtime_allow() can be removed. Signed-off-by: Manivannan Sadhasivam --- drivers/usb/dwc3/dwc3-qcom.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c index f1059dfcb0e8..5f26bb66274f 100644 --- a/drivers/usb/dwc3/dwc3-qcom.c +++ b/drivers/usb/dwc3/dwc3-qcom.c @@ -920,7 +920,7 @@ static int dwc3_qcom_probe(struct platform_device *pdev) qcom->is_suspended = false; pm_runtime_set_active(dev); pm_runtime_enable(dev); - pm_runtime_forbid(dev); + pm_suspend_ignore_children(dev, false); return 0; @@ -948,6 +948,8 @@ static int dwc3_qcom_remove(struct platform_device *pdev) struct device *dev = &pdev->dev; int i; + pm_runtime_get_sync(dev); + device_remove_software_node(&qcom->dwc3->dev); of_platform_depopulate(dev); @@ -960,7 +962,6 @@ static int dwc3_qcom_remove(struct platform_device *pdev) dwc3_qcom_interconnect_exit(qcom); reset_control_assert(qcom->resets); - pm_runtime_allow(dev); pm_runtime_disable(dev); return 0;