Commit 279fa5c
arm64:acpi fix the acpi alignment exception when 'mem=' specified
When kernel parameter 'mem=x' is specified by the command line,
probably the ACPI memory regions from firmware will beyond the
scope of the physical memory space after limited, if we don't add
back those regions into memblock in this case, then the ACPI core
will map it as device memory type. Since the ACPI core will produce
non-alignment access when parsing the AML data stream, alignment
exception will be generated upon the device memory mapped region.
Below is an alignment exception output observed on ARM platform
with acpi enabled:
...
[ 0.542475] Unable to handle kernel paging request at virtual address ffff0000080521e7
[ 0.550457] pgd = ffff000008aa0000
[ 0.553880] [ffff0000080521e7] *pgd=000000801fffe003, *pud=000000801fffd003, *pmd=000000801fffc003, *pte=00e80083ff1c1707
[ 0.564939] Internal error: Oops: 96000021 [#1] PREEMPT SMP
[ 0.570553] Modules linked in:
[ 0.573626] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.7.0-rc3-next-20160616+ torvalds#172
[ 0.581344] Hardware name: AMD Overdrive/Supercharger/Default string, BIOS ROD1001A 02/09/2016
[ 0.590025] task: ffff800001ef0000 ti: ffff800001ef8000 task.ti: ffff800001ef8000
[ 0.597571] PC is at acpi_ns_lookup+0x520/0x734
[ 0.602134] LR is at acpi_ns_lookup+0x4a4/0x734
[ 0.606693] pc : [<ffff0000083b8b10>] lr : [<ffff0000083b8a94>] pstate: 60000045
[ 0.614145] sp : ffff800001efb8b0
[ 0.617478] x29: ffff800001efb8c0 x28: 000000000000001b
[ 0.622829] x27: 0000000000000001 x26: 0000000000000000
[ 0.628181] x25: ffff800001efb9e8 x24: ffff000008a10000
[ 0.633531] x23: 0000000000000001 x22: 0000000000000001
[ 0.638881] x21: ffff000008724000 x20: 000000000000001b
[ 0.644230] x19: ffff0000080521e7 x18: 000000000000000d
[ 0.649580] x17: 00000000000038ff x16: 0000000000000002
[ 0.654929] x15: 0000000000000007 x14: 0000000000007fff
[ 0.660278] x13: ffffff0000000000 x12: 0000000000000018
[ 0.665627] x11: 000000001fffd200 x10: 00000000ffffff76
[ 0.670978] x9 : 000000000000005f x8 : ffff000008725fa8
[ 0.676328] x7 : ffff000008a8df70 x6 : ffff000008a8df70
[ 0.681679] x5 : ffff000008a8d000 x4 : 0000000000000010
[ 0.687027] x3 : 0000000000000010 x2 : 000000000000000c
[ 0.692378] x1 : 0000000000000006 x0 : 0000000000000000
...
[ 1.262235] [<ffff0000083b8b10>] acpi_ns_lookup+0x520/0x734
[ 1.267845] [<ffff0000083a7160>] acpi_ds_load1_begin_op+0x174/0x4fc
[ 1.274156] [<ffff0000083c1f4c>] acpi_ps_build_named_op+0xf8/0x220
[ 1.280380] [<ffff0000083c227c>] acpi_ps_create_op+0x208/0x33c
[ 1.286254] [<ffff0000083c1820>] acpi_ps_parse_loop+0x204/0x838
[ 1.292215] [<ffff0000083c2fd4>] acpi_ps_parse_aml+0x1bc/0x42c
[ 1.298090] [<ffff0000083bc6e8>] acpi_ns_one_complete_parse+0x1e8/0x22c
[ 1.304753] [<ffff0000083bc7b8>] acpi_ns_parse_table+0x8c/0x128
[ 1.310716] [<ffff0000083bb8fc>] acpi_ns_load_table+0xc0/0x1e8
[ 1.316591] [<ffff0000083c9068>] acpi_tb_load_namespace+0xf8/0x2e8
[ 1.322818] [<ffff000008984128>] acpi_load_tables+0x7c/0x110
[ 1.328516] [<ffff000008982ea4>] acpi_init+0x90/0x2c0
[ 1.333603] [<ffff0000080819fc>] do_one_initcall+0x38/0x12c
[ 1.339215] [<ffff000008960cd4>] kernel_init_freeable+0x148/0x1ec
[ 1.345353] [<ffff0000086b7d30>] kernel_init+0x10/0xec
[ 1.350529] [<ffff000008084e10>] ret_from_fork+0x10/0x40
[ 1.355878] Code: b9009fbc 2a00037b 36380057 3219037b (b940026)
[ 1.362035] ---[ end trace 03381e5eb0a24de4 ]---
[ 1.366691] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
With 'efi=debug', we can see those ACPI regions from firmware as:
[ 0.000000] efi: 0x0083ff1b5000-0x0083ff1c2fff [ACPI Reclaim Memory| | | | | | | | |WB|WT|WC|UC]*
[ 0.000000] efi: 0x0083ff223000-0x0083ff224fff [ACPI Memory NVS | | | | | | | | |WB|WT|WC|UC]*
This patch is trying to add back those regions into memblock, make
ACPI core map it as normal memory instead of device memory type.
Signed-off-by: Dennis Chen <[email protected]>
Cc: Catalin Marinas <[email protected]>
Cc: Steve Capper <[email protected]>
Cc: Ard Biesheuvel <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: Rafael J. Wysocki <[email protected]>
Cc: Matt Fleming <[email protected]>
Cc: [email protected]
Cc: [email protected]1 parent 541ec87 commit 279fa5c
File tree
4 files changed
+57
-2
lines changed- arch/arm64
- include/asm
- kernel
- mm
- drivers/firmware/efi
4 files changed
+57
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
20 | 30 | | |
| 31 | + | |
| 32 | + | |
21 | 33 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
| |||
196 | 197 | | |
197 | 198 | | |
198 | 199 | | |
| 200 | + | |
| 201 | + | |
199 | 202 | | |
200 | 203 | | |
201 | 204 | | |
| |||
226 | 229 | | |
227 | 230 | | |
228 | 231 | | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
229 | 252 | | |
230 | 253 | | |
231 | 254 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
49 | 50 | | |
50 | 51 | | |
51 | 52 | | |
| |||
172 | 173 | | |
173 | 174 | | |
174 | 175 | | |
175 | | - | |
| 176 | + | |
176 | 177 | | |
177 | 178 | | |
178 | 179 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| 26 | + | |
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
29 | 35 | | |
30 | 36 | | |
31 | 37 | | |
| |||
210 | 216 | | |
211 | 217 | | |
212 | 218 | | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
213 | 232 | | |
214 | 233 | | |
215 | 234 | | |
| |||
0 commit comments