From: sramana@codeaurora.org (Srinivas Ramana)
To: linux-arm-kernel@lists.infradead.org
Subject: Improper TTBCR for arm 32bit kernel decompression
Date: Fri, 09 Sep 2016 22:04:05 +0530 [thread overview]
Message-ID: <57D2E47D.5030105@codeaurora.org> (raw)
Hello,
While trying to boot arm-32 bit kernel, I came across a problem where
TTBCR is in improper state. If the bootloader uses the long descriptor
format and jumps to kernel decompressor code, TTBCR may not be in the
right state. So, as soon as the MMU is enabled, execution can not
proceed further.
Before enabling the MMU, it is required to clear the TTBCR.PD0 field to
use TTBR0 for translation table walks. Also, TTBCR.N should be reset to
'0' to indicate the correct base address width. The 'commit
dbece45894d3a ("ARM: 7501/1: decompressor: reset ttbcr for VMSA ARMv7
cores")' does the reset of TTBCR.N, but doesn't consider all the bits
for the size of TTBCR.N.
when i tried the below change where i explicitly clear TTBCR.PD0 and use
correct mask for TTBCR.N, I see proper memory after MMU is enabled and
decompression succeeds.
Request your comments on the change below. If it looks good, I can
submit a patch for inclusion.
---------------------8<----------------------------------
diff --git a/arch/arm/boot/compressed/head.S
b/arch/arm/boot/compressed/head.S
index af11c2f..5769f1f 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -779,7 +779,8 @@ __armv7_mmu_cache_on:
orrne r0, r0, #1 @ MMU enabled
movne r1, #0xfffffffd @ domain 0 = client
bic r6, r6, #1 << 31 @ 32-bit translation system
- bic r6, r6, #3 << 0 @ use only ttbr0
+ bic r6, r6, #7 << 0 @ width of base address
field
+ bic r6, r6, #1 << 4 @ use only ttbr0
mcrne p15, 0, r3, c2, c0, 0 @ load page table pointer
mcrne p15, 0, r1, c3, c0, 0 @ load domain access
control
mcrne p15, 0, r6, c2, c0, 2 @ load ttb control
---------------------8<----------------------------------
Thanks,
-- Srinivas R
--
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center,
Inc., is a member of Code Aurora Forum, a Linux Foundation Collaborative
Project.
next reply other threads:[~2016-09-09 16:34 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-09 16:34 Srinivas Ramana [this message]
2016-09-09 17:36 ` Improper TTBCR for arm 32bit kernel decompression Nicolas Pitre
2016-09-10 5:50 ` Srinivas Ramana
2016-09-10 8:12 ` Srinivas Ramana
2016-09-12 6:57 ` [PATCH] ARM: decompressor: reset ttbcr fields to use TTBR0 on ARMv7 Srinivas Ramana
2016-09-12 10:23 ` Russell King - ARM Linux
2016-09-12 17:51 ` Robin Murphy
2016-09-13 14:52 ` Srinivas Ramana
2016-09-27 12:16 ` Srinivas Ramana
2016-09-27 12:54 ` Robin Murphy
2016-09-28 12:45 ` [PATCH v1] " Srinivas Ramana
2016-09-28 22:00 ` Russell King - ARM Linux
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=57D2E47D.5030105@codeaurora.org \
--to=sramana@codeaurora.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).