2013-07-10 23:02:50

by Shuah Khan

[permalink] [raw]
Subject: Re: [tpmdd-devel] [PATCH 3/4] tpm: Convert tpm_tis driver to use dev_pm_ops from legacy pm_ops

On 07/10/2013 04:43 PM, Peter H?we wrote:
> Hi,
>
> thanks for your patch
>> static struct pnp_device_id tpm_pnp_tbl[] = {
>> {"PNP0C31", 0}, /* TPM */
>> {"ATM1200", 0}, /* Atmel */
>> @@ -835,9 +834,12 @@ static struct pnp_driver tis_pnp_driver = {
>> .name = "tpm_tis",
>> .id_table = tpm_pnp_tbl,
>> .probe = tpm_tis_pnp_init,
>> - .suspend = tpm_tis_pnp_suspend,
>> - .resume = tpm_tis_pnp_resume,
>> .remove = tpm_tis_pnp_remove,
>> +#ifdef CONFIG_PM_SLEEP
>> + .driver = {
>> + .pm = &tpm_tis_pm,
>> + },
>> +#endif
>> };
>
>
> I don't think the #if CONFIG_PM_SLEEP is required here.
>
> Thanks,
> Peter
>

tpm_tis_resume() is defined originally in CONFIG_PM_SLEEP scope. I can
make the change to have tpm_tis_resume() not be in CONFIG_PM_SLEEP scope
and remove this CONFIG_PM_SLEEP when defining .pm. That does make sense
looking at tpm_pm_suspend() and tpm_pm_resume() which are defined
without CONFIG_PM_SLEEP scope. Sounds like the right approach? I will
redo the patch and send v2.

I find that the use of CONFIG_PM, CONFIG_PM_SLEEP, and CONFIG_PM_RUNTIME
are not very consistent. :)

-- Shuah

Shuah Khan, Linux Kernel Developer - Open Source Group Samsung Research
America (Silicon Valley) [email protected] | (970) 672-0658


2013-07-10 23:29:27

by Peter Huewe

[permalink] [raw]
Subject: Re: [tpmdd-devel] [PATCH 3/4] tpm: Convert tpm_tis driver to use dev_pm_ops from legacy pm_ops

Hi Shuah,
thanks for your reply.


> >> +#ifdef CONFIG_PM_SLEEP
> >> + .driver = {
> >> + .pm = &tpm_tis_pm,
> >> + },
> >> +#endif
> >>
> >> };
> >
> > I don't think the #if CONFIG_PM_SLEEP is required here.
In this case, the SIMPLE_DEV_PM_OPS macro handles the case internally - i.e.
no matter whether CONFIG_PM_SLEEP is set or not, the correct structure is set
up and thus no ifdef needed.


>
> tpm_tis_resume() is defined originally in CONFIG_PM_SLEEP scope. I can
> make the change to have tpm_tis_resume() not be in CONFIG_PM_SLEEP scope
> and remove this CONFIG_PM_SLEEP when defining .pm.
> That does make sense looking at tpm_pm_suspend() and tpm_pm_resume() which
> are defined ithout CONFIG_PM_SLEEP scope. Sounds like the right approach?
> I will redo the patch and send v2.

Hmm,
at first I thought that would be a good idea, however scrolling to the git
history I found:

commit 07368d32f1a67e797def08cf2ee3ea1647b204b6
Author: Rafael J. Wysocki <[email protected]>
Date: Thu Aug 9 23:00:35 2012 +0200

tpm_tis / PM: Fix unused function warning for CONFIG_PM_SLEEP

According to a compiler warning, the tpm_tis_resume() function is not
used for CONFIG_PM_SLEEP unset, so add a #ifdef to prevent it from
being built in that case.

Signed-off-by: Rafael J. Wysocki <[email protected]>

So removing it there would effectively revert the patch and re-enable the
warning.



> I find that the use of CONFIG_PM, CONFIG_PM_SLEEP, and CONFIG_PM_RUNTIME
> are not very consistent. :)
Yes.

Maybe the better idea is to add the correct CONFIG_PM ifdefs for all code
paths related to PM.
Or leave the CONFIG_PM for tpm_tis_resume as it is.


Thanks,
Peter