Thread (81 messages) 81 messages, 11 authors, 2011-09-20
STALE5424d

[PATCH 14/25] OMAP4: PM: Add CPUX OFF mode support

From: Shilimkar, Santosh <hidden>
Date: 2011-09-10 03:38:16
Also in: linux-omap

IOn Sat, Sep 10, 2011 at 5:04 AM, Shawn Guo [off-list ref] wrote:
On Fri, Sep 09, 2011 at 10:29:49PM +0530, Santosh wrote:
quoted
On Friday 09 September 2011 08:57 PM, Shawn Guo wrote:
quoted
On Fri, Sep 09, 2011 at 07:41:08PM +0530, Shilimkar, Santosh wrote:
quoted
On Fri, Sep 9, 2011 at 7:43 PM, Shawn Guo[off-list ref] ?wrote:
quoted
On Fri, Sep 09, 2011 at 01:39:51PM +0530, Santosh wrote:
quoted
On Friday 09 September 2011 01:34 PM, Shawn Guo wrote:
quoted
Hi Santosh,
[...]
quoted
quoted
#ifdef CONFIG_CACHE_L2X0
? ?/*
? ? * Clean and invalidate the L2 cache.
? ? * Common cache-l2x0.c functions can't be used here since it
? ? * uses spinlocks. We are out of coherency here with data cache
? ? * disabled. The spinlock implementation uses exclusive load/store
? ? * instruction which can fail without data cache being enabled.
? ? * OMAP4 hardware doesn't support exclusive monitor which can
? ? * overcome exclusive access issue. Because of this, CPU can
? ? * lead to deadlock.
? ? */
l2x_clean_inv:
? ?bl ? ? ?omap4_get_sar_ram_base
? ?mov ? ? r8, r0
? ?mrc ? ? p15, 0, r5, c0, c0, 5 ? ? ? ? ? @ Read MPIDR
? ?ands ? ?r5, r5, #0x0f
? ?ldreq ? r0, [r8, #L2X0_SAVE_OFFSET0]
? ?ldrne ? r0, [r8, #L2X0_SAVE_OFFSET1]
? ?cmp ? ? r0, #3
? ?bne ? ? do_WFI
It looks like you are bypassing L2 clean and invalidate for cases
"1" and "2" here. ?But I really do not understand how you get r0
back here.
The value which is passed in R0 is also stored in scratch patch memory
and retrieved using L2X0_SAVE_OFFSET0.
Simple :)
Aha, no wonder that I read it wrongly. ?The parameter passing in r0
is here simply for confusing people.
No It's not. Same cod is used for CPUIDLE and we do have different
C-states than just OSWR. ON and INACTIVE makes use of it.
Also, IMO, lable "l2x_clean_inv" should be put after the "bne do_WFI".
Otherwise, my original statement (it seems l2x_clean_inv will be
called for case "2") stands correct :)
It's just a label. All L2 related code and checks for the valid state is
kept under that by purpose.

Regards
Santosh
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help