[PATCH] omap: resource: Add per-resource mutex for OMAP resource framework
Kevin Hilman
khilman at deeprootsystems.com
Wed Mar 10 12:27:37 EST 2010
Mike Chan <mike at android.com> writes:
> On Tue, Mar 9, 2010 at 4:09 PM, <y at google.com> wrote:
>> From: Chunqiu Wang <cqwang at motorola.com>
>>
>> Current OMAP resource fwk uses a global res_mutex
>> for resource_request and resource_release calls
>> for all the available resources.It may cause dead
>> lock if resource_request/resource_release is called
>> recursively.
>>
>> For current OMAP3 VDD1/VDD2 resource, the change_level
>> implementation is mach-omap2/resource34xx.c/set_opp(),
>> when using resource_release to remove vdd1 constraint,
>> this function may call resource_release again to release
>> Vdd2 constrait if target vdd1 level is less than OPP3.
>> in this scenario, the global res_mutex down operation
>> will be called again, this will cause the second
>> down operation hang there.
>>
>> To fix the problem, per-resource mutex is added
>> to avoid hangup when resource_request/resource_release
>> is called recursively.
>>
>> Signed-off-by: Chunqiu Wang <cqwang at motorola.com>
>> Signed-off-by: Mike Chan <mike at android.com>
>> ---
>> arch/arm/plat-omap/include/plat/resource.h | 2 ++
>> arch/arm/plat-omap/resource.c | 21 ++++++++++-----------
>> 2 files changed, 12 insertions(+), 11 deletions(-)
>>
>> diff --git a/arch/arm/plat-omap/include/plat/resource.h b/arch/arm/plat-omap/include/plat/resource.h
>> index 9acebcc..b5aff1f 100644
>> --- a/arch/arm/plat-omap/include/plat/resource.h
>> +++ b/arch/arm/plat-omap/include/plat/resource.h
>> @@ -54,6 +54,8 @@ struct shared_resource {
>> /* Shared resource operations */
>> struct shared_resource_ops *ops;
[...]
>
> Oops, my git client was slightly screwed up, apologies, I meant to
> send this from mike at android.com, the patch is still good though :)
>
FYI... SRF is currently only in the PM branch of the OMAP tree, is
deprecated and is not targeted for mainline.
I'll merge this there, but please note that there is no new
development happening for SRF.
Thanks,
Kevin
More information about the linux-arm-kernel
mailing list