From: "m.shams" <m.shams@samsung.com>
To: "'Uwe Kleine-König'" <u.kleine-koenig@pengutronix.de>
Cc: <thierry.reding@gmail.com>, <lee.jones@linaro.org>,
<linux-pwm@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<alim.akhtar@samsung.com>
Subject: RE: [PATCH] pwm: removes period check from pwm_apply_state()
Date: Wed, 10 Aug 2022 17:09:30 +0530 [thread overview]
Message-ID: <004301d8acad$e31fee70$a95fcb50$@samsung.com> (raw)
In-Reply-To: <20220808174842.jiato34jzqstchdn@pengutronix.de>
Hi Uwe,
> Hello,
>
> I fixed up the quoting for you in this mail. Please fix your mailer to not
break
> quotes, this is quite annoying. (Looking at the headers of your mail
you're using
> Outlook. Then your only viable option is to switch to a saner client.)
>
Sorry for the inconvenience. I have fixed my mailer.
> On Mon, Aug 08, 2022 at 07:47:03PM +0530, m.shams wrote:
> > On Fri, Aug 05, 2022 at 03:41:25PM +0530, Tamseel Shams wrote:
> > > > There may be situation when PWM is exported using sysfs, but at
> > > > that point PWM period is not set. At this situation if we issue a
> > > > system suspend, it calls pwm_class_suspend which in turn calls
> > > > pwm_apply_state, where PWM period value is checked which returns
> > > > an invalid argument error casuing Kernel to panic. So, check for
> > > > PWM period value is removed so as to fix the kernel panic observed
> > > > during suspend.
> > >
> > > This looks and sounds wrong. One thing I would accept is:
> > >
> > > diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c index
> > > 0e042410f6b9..075bbcdad6c1 100644
> > > --- a/drivers/pwm/core.c
> > > +++ b/drivers/pwm/core.c
> > > @@ -557,8 +557,8 @@ int pwm_apply_state(struct pwm_device *pwm,
> const struct pwm_state *state)
> > > */
> > > might_sleep();
> > >
> > > - if (!pwm || !state || !state->period ||
> > > - state->duty_cycle > state->period)
> > > + if (!pwm || !state || state->enabled && (!state->period ||
> > > + state->duty_cycle > state->period))
> > > return -EINVAL;
> > >
> > > chip = pwm->chip;
> > >
> > > That is, don't refuse calling pwm_apply_state() for state->period =
> > > 0 and even state->duty_cycle > state->period if the > > PWM is not
enabled.
> >
> > By this do you mean doing it following way?
> >
> > if (!pwm || !state || (pwm && !state->period) ||
> > (pwm && state->duty_cycle > state->period))
> > return -EINVAL;
>
> No. Your expression is logically equivalent to what we already have. I
> meant:
>
> if (!pwm || !state || state->enabled && (!state->period ||
> state->duty_cycle > state->period))
> return -EINVAL;
>
> Learning to read diffs (maybe Outlook scrambled the view for you, too?) is
a
> nice capability you should master.
>
> > > But anyhow, even without that the kernel should not panic. So I ask
> > > you to research and provide some more info about > > the problem.
> > > (Which hardware does it affect? Where does it panic? ...)
> >
> > Observing Kernel panic in exynos SoC when we issue system suspend.
> > Following is the snippet of error:
> >
> > # echo mem > /sys/power/state
> > [ 29.224784] 010: Kernel panic - not syncing: pwm pwmchip0:
> > dpm_run_callback failure
> > [ 29.240134] 010: Call trace:
> > [ 29.242993] 010: dump_backtrace+0x0/0x1b8
> > [ 29.247067] 010: show_stack+0x24/0x30
> > [ 29.250793] 010: dump_stack+0xb8/0x114
> > [ 29.254606] 010: panic+0x180/0x398
> > [ 29.258073] 010: dpm_run_callback+0x270/0x278
> > [ 29.262493] 010: __device_suspend+0x15c/0x628
> > [ 29.266913] 010: dpm_suspend+0x124/0x3b0
> > [ 29.270899] 010: dpm_suspend_start+0xa0/0xa8
> > [ 29.275233] 010: suspend_devices_and_enter+0x110/0x968
> > [ 29.280433] 010: pm_suspend+0x308/0x3d8
> > [ 29.284333] 010: state_store+0x8c/0x110
> > [ 29.288233] 010: kobj_attr_store+0x14/0x28
> > [ 29.292393] 010: sysfs_kf_write+0x5c/0x78
> > [ 29.296466] 010: kernfs_fop_write+0x10c/0x220
> > [ 29.300886] 010: __vfs_write+0x48/0x90
> > [ 29.304699] 010: vfs_write+0xb8/0x1c0
> > [ 29.308426] 010: ksys_write+0x74/0x100
> > [ 29.312240] 010: __arm64_sys_write+0x24/0x30
> > [ 29.316573] 010: el0_svc_handler+0x110/0x1b8
> > [ 29.320906] 010: el0_svc+0x8/0x1bc
> > [ 29.324374] 010: SMP: stopping secondary CPUs
> > [ 29.328711] 010: Kernel Offset: disabled
> > [ 29.332607] 010: CPU features: 0x0002,00006008
> > [ 29.337026] 010: Memory Limit: none
> > [ 29.343949] 010: Rebooting in 1 seconds..
> > [ 30.344539] 010: Disabling non-boot CPUs ...
>
> Just locking at that and starring at drivers/base/power/main.c for a while
> doesn't make this clearer to me. Are you using a mainline kernel?
> Which version?
>
Looks like I had some local patch which was causing the error to trigger
Kernel Panic (sorry about that).
On removing those local changes, I do not observe kernel panic, but observe
following error and then suspend fails.
[ 63.963063] pwm pwmchip0: PM: dpm_run_callback ():
pwm_class_suspend+0x0/0xf8 returns -22
[ 63.963079] pwm pwmchip0: PM: failed to suspend: error -22
So, as to fix this issue I will post a new version of patch containing
change suggested by you.
Best Regards,
Tamseel Shams
next prev parent reply other threads:[~2022-08-10 14:23 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20220805102056epcas5p29f22d42c854bebe6d0301b56094cf3ea@epcas5p2.samsung.com>
2022-08-05 10:11 ` [PATCH] pwm: removes period check from pwm_apply_state() Tamseel Shams
2022-08-05 15:55 ` Uwe Kleine-König
2022-08-08 14:17 ` m.shams
2022-08-08 17:48 ` Uwe Kleine-König
2022-08-10 11:39 ` m.shams [this message]
2022-08-10 17:10 ` Uwe Kleine-König
2022-08-19 4:39 ` m.shams
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='004301d8acad$e31fee70$a95fcb50$@samsung.com' \
--to=m.shams@samsung.com \
--cc=alim.akhtar@samsung.com \
--cc=lee.jones@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=thierry.reding@gmail.com \
--cc=u.kleine-koenig@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.