Received: by 2002:a05:7412:3784:b0:e2:908c:2ebd with SMTP id jk4csp2492213rdb; Wed, 4 Oct 2023 02:59:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE+nZi7IoylWFfDOu4wdPGCVDC8x1WdWdjN9o9gPwJn9ppPlJX5n/2cOOsOAFRj39tl481C X-Received: by 2002:a05:6808:315:b0:3ad:f6a2:cfe2 with SMTP id i21-20020a056808031500b003adf6a2cfe2mr1830832oie.22.1696413583758; Wed, 04 Oct 2023 02:59:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696413583; cv=none; d=google.com; s=arc-20160816; b=fxBY8+ze8LdXX2lv0oxJCVsjNjhlVpuMO9nV1sYfPnboHTc9/RlxfZUtjLM0s5bKmQ dKrclZyf/9wcmy/VjxQI+/g4WF7CbH0tiOju4ciMDpz2CdvgRoavplmpSBzIrNqZlPnh sIWKb9Lrru6Qb0zh7PyVN5GjYC0J3SMptHDpTDyBPTe8dtkdFwqiiAOeqn4F3I4lgMvc eUR0Ncu+nBzEjfOfq/TdNCkv2Ws9IY7NPs0ieFHbIHV/ovhDeGMV/+teakw+jfDS36Un eD9rbpdl7vzuKgfq48lIBP4vAmaE8zwDyth9MNU4PTsEJkyVsR+gVC8xg+mecQ8ZdzLZ RqkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=0iIPl60+E+yo0mfKUBWRPiOsSiL2KL7wCEOUuTbMsMg=; fh=g9ftyCjb/nwMY8JZ6R9V/BeaZUp/y4hPV0soWCPH/xQ=; b=gRmFKk6TR4Sw3TzR0wL4IL64UVdfNFqydmspo3sekst+4rpuXH7lQCWWwpiRU2W/5+ FO74mx3R1fc9OpE9ETjOAkKjS1BWvcGpdxvBxUvtzI3CgdDEtrGlbw414ikqT1h2mlRX YYoi6Tl9EvElmqTnieza8I/A//r4yB/UvTn+RHnUco4Cy1Pj7ck5ZYRgznxMQTrSoq6e /825xb2bTZSxm8BABIFaluRkzExkm7ifU90r7LcVnGGymYUPHhuumsML2bgUPRD1QapB +VL9EPhA/QHK8KMJsuBr7/Y+8fewrJeU1OD/UbSbEW9/0eCL8Dz1B4Xs/t5kD5HO0OS8 t2bQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id bk13-20020a056a02028d00b005702c84e4c2si3377576pgb.508.2023.10.04.02.59.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Oct 2023 02:59:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id CEBC9820E50F; Wed, 4 Oct 2023 02:59:42 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233019AbjJDJ7m (ORCPT + 99 others); Wed, 4 Oct 2023 05:59:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60746 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232862AbjJDJ7l (ORCPT ); Wed, 4 Oct 2023 05:59:41 -0400 Received: from metis.whiteo.stw.pengutronix.de (metis.whiteo.stw.pengutronix.de [IPv6:2a0a:edc0:2:b01:1d::104]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7C3B3AC for ; Wed, 4 Oct 2023 02:59:37 -0700 (PDT) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qnyf5-0002vN-0q; Wed, 04 Oct 2023 11:59:23 +0200 Received: from [2a0a:edc0:0:900:1d::77] (helo=ptz.office.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qnyf3-00Azxr-7z; Wed, 04 Oct 2023 11:59:21 +0200 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1qnyf2-008uPw-UB; Wed, 04 Oct 2023 11:59:20 +0200 Date: Wed, 4 Oct 2023 11:59:20 +0200 From: Uwe =?utf-8?Q?Kleine-K=C3=B6nig?= To: Sean Young Cc: Thierry Reding , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Vladimir Zapolskiy , Conor Dooley , Daire McNamara , Palmer Dabbelt , Paul Walmsley , Fabrice Gasnier , Maxime Coquelin , Alexandre Torgue , linux-pwm@vger.kernel.org, Ivaylo Dimitrov , linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 1/2] pwm: make it possible to apply pwm changes in atomic context Message-ID: <20231004095920.ne7yrrthow6tnuvg@pengutronix.de> References: <1bd5241d584ceb4d6b731c4dc3203fb9686ee1d1.1696156485.git.sean@mess.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="hz3c3li5tw4muaqt" Content-Disposition: inline In-Reply-To: <1bd5241d584ceb4d6b731c4dc3203fb9686ee1d1.1696156485.git.sean@mess.org> X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Wed, 04 Oct 2023 02:59:43 -0700 (PDT) --hz3c3li5tw4muaqt Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hello Sean, On Sun, Oct 01, 2023 at 11:40:29AM +0100, Sean Young wrote: > diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c > index dc66e3405bf5..d9679ae5b2be 100644 > --- a/drivers/pwm/core.c > +++ b/drivers/pwm/core.c > @@ -505,7 +505,7 @@ int pwm_apply_state(struct pwm_device *pwm, const str= uct pwm_state *state) > * is a bad idea. So make it explicit that calling this function might > * sleep. > */ > - might_sleep(); > + might_sleep_if(pwm_can_sleep(pwm)); > =20 > if (!pwm || !state || !state->period || > state->duty_cycle > state->period) I'd like to have a mechanism to catch drivers that missed to set =2Ecan_sleep. The best idea I currently have for that is to disable preemption if IS_ENABLED(CONFIG_PWM_DEBUG) && !pwm_can_sleep(pwm) while =2Eapply() is running. > diff --git a/drivers/pwm/pwm-fsl-ftm.c b/drivers/pwm/pwm-fsl-ftm.c > index b7c6045c5d08..b8b9392844e9 100644 > --- a/drivers/pwm/pwm-fsl-ftm.c > +++ b/drivers/pwm/pwm-fsl-ftm.c > @@ -405,6 +405,7 @@ static int fsl_pwm_probe(struct platform_device *pdev) > =20 > fpc->soc =3D of_device_get_match_data(&pdev->dev); > fpc->chip.dev =3D &pdev->dev; > + fpc->chip.can_sleep =3D true; As .apply() being callable in non-sleepable context only depends on =2Eapply() I think a better place for this property is in struct pwm_ops. Also I wonder if the distinction between atomic and sleeping pwm_state_apply() should be more explicit. For GPIOs you have a sleeping variant gpiod_set_value_cansleep() that allows to immediately determine the intended context in the caller. This would allow that programming a PWM stays a preemption point (if possible/desired) even if the underlying hardware/driver is atomic. To not have to touch all consumer drivers, maybe the pair for pwm should better be pwm_apply_state() pwm_apply_state_atomic() instead of a "cansleep" suffix for the sleeping variant? Or maybe it's better to accept touching all consumer drivers to get semantics similar to gpio? I couldn't decide quickly what I really like better here, so that's your chance to comment and influence the outcome :-) Best regards Uwe --=20 Pengutronix e.K. | Uwe Kleine-K=F6nig | Industrial Linux Solutions | https://www.pengutronix.de/ | --hz3c3li5tw4muaqt Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEP4GsaTp6HlmJrf7Tj4D7WH0S/k4FAmUdN3gACgkQj4D7WH0S /k7Vgwf+OSTM/5a3jTbEn+zj18WbWk6jQQdj6kqyM47GR36RweXbkLMfbl++5ogJ z6xjVfn/ov9rQsnn2Em53Zkv7yV/AQb+Hu1tLnuVAsdyxVC/CrCRjWAcrkpoZf6o Ru7Nf7hs/mJ57jeLgBfPp+k2kwntn470QPIpzLiruZge1YeEwuYKzeHuO7WI4KCb 777XYS5j+tntQRSrlm2dzE8H+5lEqc7mEzG22MAd+yIt4dAsuSAdno2hKLMJx960 4k6Y+UmLJB3cC+BPcAjEllupp1c4turpZ+3P/7D0Fo8P5BgH937nm/wktXJJlPBs aJ8B/mMpia+WhQcYdq+TjejxlzAf3Q== =THVI -----END PGP SIGNATURE----- --hz3c3li5tw4muaqt--