Re: [PATCH/RFC] Runtime PM: ARM: subarch-specific extensions of pdev_archdata

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Aug 3, 2010 at 10:16 AM, Kevin Hilman
<khilman@xxxxxxxxxxxxxxxxxxx> wrote:
> Magnus Damm <magnus.damm@xxxxxxxxx> writes:
>
>> On Sun, Jul 25, 2010 at 5:24 AM, Grant Likely <grant.likely@xxxxxxxxxxxx> wrote:
>>> "Magnus Damm" <magnus.damm@xxxxxxxxx> wrote:
>>>>On Tue, Oct 27, 2009 at 8:13 AM, Kevin Hilman
>>>><khilman@xxxxxxxxxxxxxxxxxxx> wrote:
>>>>> Eric Miao <eric.y.miao@xxxxxxxxx> writes:
>>>>>> On Thu, Sep 24, 2009 at 7:28 AM, Kevin Hilman
>>>>>> <khilman@xxxxxxxxxxxxxxxxxxx> wrote:
>>>>>>> Mikael Pettersson wrote:
>>>>>>>> Eric Miao writes:
>>>>>>>>  > On Wed, Sep 23, 2009 at 9:50 AM, Kevin Hilman
>>>>>>>>  > <khilman@xxxxxxxxxxxxxxxxxxx> wrote:
>>>>>>>>  > > On ARM platforms, power management can be very platform specific.
>>>>>>>>  > > This patch allows ARM subarches to extend the platform_device
>>>>>>>>  > > pdev_archdata for each subarch by creating a new struct pdev_machdata
>>>>>>>>  > > and allowing each subarch to customize it as needed.
>>
>>>>Do you remember what happened with this patch?
>>>
>>> I don't have all the details in front of me because I'm on my phone,
>>> but I advised against pdev_archdata because it is
>>> multiplatform-unfriendly.
>>
>> Ok, I did not expect that. =) But after thinking a bit it does make
>> sense. I wonder what my options are. I'm not so fond of the idea to
>> wrap the platform devices - that's not more multi-platform friendly,
>> is it?
>
> [sorry for the lag, been on vacation]
>
> Wrapping is more multi-platform friendly because only platform-specific
> code accesses the wrapped code.  It's also logically consistent as
> a struct device is contained by a platform_device which is then
> contained by an omap_device (in our case.)   Only OMAP-specific code
> ever knows about or touches that layer.

(I just noticed this; will also reply on the other thread so it is
recorded in the public record) But it is also really dangerous;
particularly in the case of dynamically allocated platform_devices.
When handed a random platform_device pointer, you have absolutely *no*
idea whether or not it is valid to dereference a pointer at a lower
address from the platform_device pointer.  It is very likely that
there will be other code in the system that will register
platform_devices without the omap_device wrapper.

>> How about using devres and platform bus notifiers?
>
> That seems fine too, and probably better if the amount of data/code you need
> is small.  In the OMAP case, it's rather complicated so it's cleaner
> IMHO to keep it in a separate omap_device layer and struct.

but it is safe

>> For a Runtime PM prototype using devres (instead of pdev_archdata or
>> wrapping) look here:
>> https://patchwork.kernel.org/patch/113605/
>>
>> To make it work with modules I propose adding a driver bind event:
>> https://patchwork.kernel.org/patch/113865/
>>
>> Looks pretty multi-platform friendly to me. Any suggestions?
>
> Your patches look multi-platform friendly, but there are still some
> outstanding issues with making runtime PM support multi-platform
> friendly that are not direclty related to the above patches.
>
> 1) weak symbols
>
> We need to change the overriding of weak symbols into some form of
> register/unregister so multiple platforms in the same kernel could work.
> That's the easy one.
>
> 2) custom vs. platform bus.
>
> The other issue under discussion between Grant & myself[1] has been the
> use of a custom bus instead of the platform bus.  Following your lead,
> (and preferring that option) I continued to use the platform_bus since
> I only need to override a few of the dev_pm_ops functions.
>
> However, Grant is not happy about overriding the platform_bus.  He would
> rather see each platform create a custom bus with it's own PM methods.
>
> In this thread[1], I did a quick and dirty proof of concept to show that
> it is possible, but quite frankly, I still much prefer continuing to use
> the platform_bus since it is mostly identical.

I quite possibly could be convinced that the devres approach is the
RightThing to do.  It neatly sidesteps the issue I see with the
omap_device container approach.  I'd need to see a prototype to be
sure.

Cheers,
g.
_______________________________________________
linux-pm mailing list
linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/linux-pm



[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux