Project

General

Profile

BootloadersIncompatibleWithLinux » History » Version 5

Denis 'GNUtoo' Carikli, 03/18/2020 03:44 PM

1 1 Denis 'GNUtoo' Carikli
h1. MidasBootloaderIncompatibleWithLinux
2
3
h2. Introduction
4
5 3 Denis 'GNUtoo' Carikli
The bootloader of the following devices is incompatible with upstream Linux:
6 1 Denis 'GNUtoo' Carikli
* Galaxy SIII (GT-I9300)
7
* Galaxy SIII 4G (GT-I9305)
8
* Galaxy Note II (GT-N7100)
9
* Galaxy Note II 4G (GT-N7105)
10
11
When jumping to Linux, the booloader still has:
12
* the instruction cache on
13
* the data cache on
14
* the MMU on
15 2 Denis 'GNUtoo' Carikli
16
"Documentation/arm/booting.rst":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/arm/booting.rst which is there "since 2003":https://git.kernel.org/pub/scm/linux/kernel/git/history/history.git/commit/?h=v2.6.0&id=c90594cab75e043c6651f4c3d7218bd67dc4005f states that:
17
* "The MMU must be off."
18 1 Denis 'GNUtoo' Carikli
* "Data cache must be off."
19 3 Denis 'GNUtoo' Carikli
20 5 Denis 'GNUtoo' Carikli
And upstream Linux "won't accept patches":https://www.openwall.com/lists/kernel-hardening/2019/06/14/9 to disable the MMU, or the data cache in Linux as they have very good reasons to do that, and they are supposed to be already disabled.
21
22 3 Denis 'GNUtoo' Carikli
h2. Supporting s-boot
23
24
To workaround that: 
25
* "to disable the caches":https://git.replicant.us/contrib/replicant-9/kernel_replicant_linux/commit/?id=85006537f34367710e7c9ae4aa0791ca5101ef46
26 4 Denis 'GNUtoo' Carikli
* "to disable CONFIG_GCC_PLUGINS":https://www.openwall.com/lists/kernel-hardening/2019/06/14/4 or "CONFIG_STACKPROTECTOR_PER_TASK":https://www.openwall.com/lists/kernel-hardening/2019/06/14/6
27 3 Denis 'GNUtoo' Carikli
28
However as the kernel evolved we need to patch it more and more:
29
* The patch disabling the caches "was not necessary on Linux 3.4":lkml.iu.edu/hypermail/linux/kernel/1212.1/02099.html
30
* Disabling CONFIG_GCC_PLUGINS was also not necessary on older kernel where the option was not even present