* [PATCH 0/5] Handle non-secure L2C initialization on Exynos4
@ 2014-06-11 15:30 Tomasz Figa
0 siblings, 0 replies; 6+ messages in thread
From: Tomasz Figa @ 2014-06-11 15:30 UTC (permalink / raw)
To: linux-arm-kernel
This series intends to add support for L2 cache on Exynos4 SoCs on boards
running under secure firmware, which requires certain initialization steps
to be done with help of firmware, as selected registers are writable only
from secure mode.
First three patches extend existing support for secure write in L2C driver
to account for design of secure firmware running on Exynos. Namely:
1) direct read access to certain registers is needed on Exynos, because
secure firmware calls set several registers at once,
2) not all boards are running secure firmware, so .write_sec callback
needs to be installed in Exynos firmware ops initialization code,
3) write access to {DATA,TAG}_LATENCY_CTRL registers fron non-secure world
is not allowed and so must use l2c_write_sec as well.
Those patches might affect other platforms using .write_sec callback, so
I'd like to kindly ask any interested people for testing.
Further two patches add impelmentation of .write_sec for Exynos secure
firmware and necessary DT nodes to enable L2 cache.
Tested on Exynos4210-based Universal C210 board (without secure firmware)
and Exynos4412-based TRATS2 board (with secure firmware).
Tomasz Figa (5):
ARM: mm: cache-l2x0: Add base address argument to write_sec callback
ARM: Get outer cache .write_sec callback from mach_desc only if not
NULL
ARM: mm: cache-l2x0: Use l2c_write_sec() for LATENCY_CTRL registers
ARM: EXYNOS: Add .write_sec outer cache callback for L2C-310
ARM: dts: exynos4: Add nodes for L2 cache controller
arch/arm/boot/dts/exynos4210.dtsi | 9 ++++++
arch/arm/boot/dts/exynos4x12.dtsi | 9 ++++++
arch/arm/include/asm/mach/arch.h | 3 +-
arch/arm/include/asm/outercache.h | 2 +-
arch/arm/kernel/irq.c | 3 +-
arch/arm/mach-exynos/firmware.c | 61 ++++++++++++++++++++++++++++++++++++++
arch/arm/mach-highbank/highbank.c | 3 +-
arch/arm/mach-omap2/omap4-common.c | 3 +-
arch/arm/mach-ux500/cache-l2x0.c | 3 +-
arch/arm/mm/cache-l2x0.c | 10 +++----
10 files changed, 95 insertions(+), 11 deletions(-)
--
1.9.3
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 0/5] Handle non-secure L2C initialization on Exynos4
[not found] <CAD8Lp46MbKZrCAMp+9T9LbWTB4uHRDdivhtjoQbkTyBbK48EgQ@mail.gmail.com>
@ 2014-06-12 14:13 ` Tomasz Figa
2014-06-12 16:20 ` Russell King - ARM Linux
2014-06-13 14:59 ` Tomasz Figa
2 siblings, 0 replies; 6+ messages in thread
From: Tomasz Figa @ 2014-06-12 14:13 UTC (permalink / raw)
To: linux-arm-kernel
Hi Daniel,
On 12.06.2014 15:38, Daniel Drake wrote:
> Hi Tomasz,
>
> Thanks for working on this!
>
> I have just tried this, against Linus master
> 64b2d1fbbfda07765dae3f601862796a61b2c451.
> Added patch "ARM: dts: Initial ODROID U2 support" and booted on
> ODROID-U2. I believe this board has the security enabled.
>
> Unfortunately, it hangs during early boot. With earlyprintk the last
> messages seen are:
>
> L2C: platform modifies aux control register: 0x02070000 -> 0x3e470001
> L2C: platform provided aux values permit register corruption.
> L2C: DT/platform modifies aux control register: 0x02070000 -> 0x3e470001
> L2C-310 enabling early BRESP for Cortex-A9
> L2C-310: enabling full line of zeros but not enabled in Cortex-A9
> L2C-310 ID prefetch enabled, offset 1 lines
> L2C-310 dynamic clock gating enabled, standby mode enabled
> L2C-310 cache controller enabled, 16 ways, 1024 kB
> L2C-310: CACHE_ID 0x4100c4c8, AUX_CTRL 0x7e470001
>
Thanks for testing. We have some ODROIDs U2 and U3 here too so I'll try
to reproduce and investigate the issue.
> I then tried to go back to the earlier patch "ARM: EXYNOS: Add secure
> firmware support for l2x0 init" (attached, needed a rebase) but that
> one also now hangs at:
>
> L2C: platform modifies aux control register: 0x02070000 -> 0x3e470001
>
> It did work on 3.14 though. Looking at the changelogs, many changes
> have been made to l2x0 recently. Can you confirm that you have tested
> your patches against a kernel with all of Russell King's recent
> changes?
I'm usually working on latest linux-next, so I'm pretty sure all the
mentioned patches were already in my tree. The base for this series was
next-20140610 tag of linux-next tree.
Best regards,
Tomasz
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 0/5] Handle non-secure L2C initialization on Exynos4
[not found] <CAD8Lp46MbKZrCAMp+9T9LbWTB4uHRDdivhtjoQbkTyBbK48EgQ@mail.gmail.com>
2014-06-12 14:13 ` [PATCH 0/5] Handle non-secure L2C initialization on Exynos4 Tomasz Figa
@ 2014-06-12 16:20 ` Russell King - ARM Linux
2014-06-12 16:47 ` Tomasz Figa
2014-06-13 14:59 ` Tomasz Figa
2 siblings, 1 reply; 6+ messages in thread
From: Russell King - ARM Linux @ 2014-06-12 16:20 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Jun 12, 2014 at 02:38:49PM +0100, Daniel Drake wrote:
> From 2e67231f10ed0b05c2bacfdd05774fe21315d6da Mon Sep 17 00:00:00 2001
> From: Gu1 <gu1@aeroxteam.fr>
> Date: Mon, 21 Jan 2013 04:13:56 +0100
> Subject: [PATCH] ARM: EXYNOS: Add secure firmware support for l2x0 init
>
> Conflicts:
> arch/arm/mm/cache-l2x0.c
For this patch... it's a big NAK because it's taking us right back down
the route of a totally fucked up cache-l2x0.c driver.
Why can't you people write stuff properly? There's already another set
of patches on this mailing list which want to pass the virtual base
address of the l2x0 controller to l2c_write_sec() so that various
registers can be read back, because the platform's secure API can
only update several registers at the same time.
This is the same pattern that is revealed in this patch. So, what
this means is that the l2c_write_sec API is wrong. We need to come
up with a *replacement* API which allows the platforms to do this
kind of setup in a *clean* way, and stop creating rotten hacks like
this which just makes long term maintanence a nightmare.
So... please start doing stuff properly. If you don't, you're going
to be getting more flames from me, especially if you start doing this
kind of hackery on code that I've been cleaning up to get rid of such
crap.
--
FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly
improving, and getting towards what was expected from it.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 0/5] Handle non-secure L2C initialization on Exynos4
2014-06-12 16:20 ` Russell King - ARM Linux
@ 2014-06-12 16:47 ` Tomasz Figa
0 siblings, 0 replies; 6+ messages in thread
From: Tomasz Figa @ 2014-06-12 16:47 UTC (permalink / raw)
To: linux-arm-kernel
Hi Russell,
On 12.06.2014 18:20, Russell King - ARM Linux wrote:
> On Thu, Jun 12, 2014 at 02:38:49PM +0100, Daniel Drake wrote:
>> From 2e67231f10ed0b05c2bacfdd05774fe21315d6da Mon Sep 17 00:00:00 2001
>> From: Gu1 <gu1@aeroxteam.fr>
>> Date: Mon, 21 Jan 2013 04:13:56 +0100
>> Subject: [PATCH] ARM: EXYNOS: Add secure firmware support for l2x0 init
>>
>> Conflicts:
>> arch/arm/mm/cache-l2x0.c
>
> For this patch... it's a big NAK because it's taking us right back down
> the route of a totally fucked up cache-l2x0.c driver.
This is just an old, internal patch that was not going to be upstreamed.
I just posted another series yesterday[1], hopefully doing it the right
way. Looking forward for review comments.
[1] http://thread.gmane.org/gmane.linux.kernel/1722989
>
> Why can't you people write stuff properly? There's already another set
> of patches on this mailing list which want to pass the virtual base
> address of the l2x0 controller to l2c_write_sec() so that various
> registers can be read back, because the platform's secure API can
> only update several registers at the same time.
Probably the series you mention is [1]? :)
>
> This is the same pattern that is revealed in this patch. So, what
> this means is that the l2c_write_sec API is wrong. We need to come
> up with a *replacement* API which allows the platforms to do this
> kind of setup in a *clean* way, and stop creating rotten hacks like
> this which just makes long term maintanence a nightmare.
>
> So... please start doing stuff properly. If you don't, you're going
> to be getting more flames from me, especially if you start doing this
> kind of hackery on code that I've been cleaning up to get rid of such
> crap.
>
Yes, I fully agree. Fortunately that was not supposed to hit upstream.
You've done a lot of great work to refactor this driver (thanks!), which
made it possible to support Exynos secure firmware in a sane way and
this is how it should be done.
Best regards,
Tomasz
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 0/5] Handle non-secure L2C initialization on Exynos4
[not found] <CAD8Lp46MbKZrCAMp+9T9LbWTB4uHRDdivhtjoQbkTyBbK48EgQ@mail.gmail.com>
2014-06-12 14:13 ` [PATCH 0/5] Handle non-secure L2C initialization on Exynos4 Tomasz Figa
2014-06-12 16:20 ` Russell King - ARM Linux
@ 2014-06-13 14:59 ` Tomasz Figa
2014-06-17 11:45 ` Daniel Drake
2 siblings, 1 reply; 6+ messages in thread
From: Tomasz Figa @ 2014-06-13 14:59 UTC (permalink / raw)
To: linux-arm-kernel
Hi Daniel,
I have attached, three patches which make the kernel boot fine with L2
cache enabled on ODROID-U3. Could you test them on your setup to verify
that they indeed fix the issue?
Best regards,
Tomasz
On 12.06.2014 15:38, Daniel Drake wrote:
> Hi Tomasz,
>
> Thanks for working on this!
>
> I have just tried this, against Linus master
> 64b2d1fbbfda07765dae3f601862796a61b2c451.
> Added patch "ARM: dts: Initial ODROID U2 support" and booted on
> ODROID-U2. I believe this board has the security enabled.
>
> Unfortunately, it hangs during early boot. With earlyprintk the last
> messages seen are:
>
> L2C: platform modifies aux control register: 0x02070000 -> 0x3e470001
> L2C: platform provided aux values permit register corruption.
> L2C: DT/platform modifies aux control register: 0x02070000 -> 0x3e470001
> L2C-310 enabling early BRESP for Cortex-A9
> L2C-310: enabling full line of zeros but not enabled in Cortex-A9
> L2C-310 ID prefetch enabled, offset 1 lines
> L2C-310 dynamic clock gating enabled, standby mode enabled
> L2C-310 cache controller enabled, 16 ways, 1024 kB
> L2C-310: CACHE_ID 0x4100c4c8, AUX_CTRL 0x7e470001
>
> I then tried to go back to the earlier patch "ARM: EXYNOS: Add secure
> firmware support for l2x0 init" (attached, needed a rebase) but that
> one also now hangs at:
>
> L2C: platform modifies aux control register: 0x02070000 -> 0x3e470001
>
> It did work on 3.14 though. Looking at the changelogs, many changes
> have been made to l2x0 recently. Can you confirm that you have tested
> your patches against a kernel with all of Russell King's recent
> changes?
>
> Thanks
> Daniel
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-ARM-EXYNOS-Invalidate-L2-cache-with-SMC-command-befo.patch
Type: text/x-patch
Size: 818 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140613/1b789d7b/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-ARM-mm-l2x0-Add-support-for-overriding-prefetch-sett.patch
Type: text/x-patch
Size: 3544 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140613/1b789d7b/attachment-0001.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0003-ARM-dts-exynos4x12-Override-prefetch-settings.patch
Type: text/x-patch
Size: 860 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140613/1b789d7b/attachment-0002.bin>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 0/5] Handle non-secure L2C initialization on Exynos4
2014-06-13 14:59 ` Tomasz Figa
@ 2014-06-17 11:45 ` Daniel Drake
0 siblings, 0 replies; 6+ messages in thread
From: Daniel Drake @ 2014-06-17 11:45 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
On Fri, Jun 13, 2014 at 3:59 PM, Tomasz Figa <t.figa@samsung.com> wrote:
> I have attached, three patches which make the kernel boot fine with L2
> cache enabled on ODROID-U3. Could you test them on your setup to verify
> that they indeed fix the issue?
Nice work, now my ODROID-U2 boots fine.
L2C: platform modifies aux control register: 0x02070000 -> 0x3e470001
L2C: platform provided aux values permit register corruption.
L2C: DT/platform modifies aux control register: 0x02070000 -> 0x3e470001
L2C-310 enabling early BRESP for Cortex-A9
L2C-310: enabling full line of zeros but not enabled in Cortex-A9
L2C-310 ID prefetch enabled, offset 8 lines
L2C-310 dynamic clock gating enabled, standby mode enabled
L2C-310 cache controller enabled, 16 ways, 1024 kB
L2C-310: CACHE_ID 0x4100c4c8, AUX_CTRL 0x7e470001
Thanks!
Daniel
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-06-17 11:45 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <CAD8Lp46MbKZrCAMp+9T9LbWTB4uHRDdivhtjoQbkTyBbK48EgQ@mail.gmail.com>
2014-06-12 14:13 ` [PATCH 0/5] Handle non-secure L2C initialization on Exynos4 Tomasz Figa
2014-06-12 16:20 ` Russell King - ARM Linux
2014-06-12 16:47 ` Tomasz Figa
2014-06-13 14:59 ` Tomasz Figa
2014-06-17 11:45 ` Daniel Drake
2014-06-11 15:30 Tomasz Figa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).