Messages in this thread | | | Subject | Re: [PATCH 1/1] soc: keembay: Add Keem Bay IMR driver | From | Daniele Alessandrelli <> | Date | Thu, 28 May 2020 14:00:29 +0100 |
| |
On Thu, 2020-05-28 at 13:22 +0200, Pavel Machek wrote: > Hi! > > > > Agreed, this sounds like an incompatible extension of the boot > > > protocol > > > that we should otherwise not merge. > > > > > > However, there is also a lot of missing information here, and it > > > is > > > always > > > possible they are trying to something for a good reason. As long > > > as > > > the > > > problem that the bootloader is trying to solve is explained well > > > enough > > > in the changelog, we can discuss it to see how it should be done > > > properly. > > > > Apologies, I should have provided more information. Here it is :) > > > > Basically, at boot time U-Boot code and core memory (.text, .data, > > .bss, etc.) is protected by this Isolated Memory Region (IMR) which > > prevents any device or processing units other than the ARM CPU to > > access/modify the memory. > > > > This is done for security reasons, to reduce the risks that a > > potential > > attacker can use "hijacked" HW devices to interfere with the boot > > process (and break the secure boot flow in place). > > Dunno. You disable that after boot anyway. Whether it is disabled > just before starting kernel or just after it makes very little > difference.
Not sure I get your point. Disabling it while U-Boot is still running poses a security risk (even if arguably tiny), while doing it once the the Kernel is running is totally safe. So, I'd prefer to do it in the Kernel, unless practical reasons prevent it.
> > Plus, I'm not sure if this has much security value at all. If I can > corrupt data u-boot works _with_ (such as kernel, dtb), I'll take > over the system anyway.
True, U-Boot data needs to be protected too and, in fact, we're trying to do that as well. Other IMRs are used to protect the kernel, dtb, and other critical memory sections.
> > IOW I believe the best/simplest way is to simply disable this in > u-boot before jumping to kernel entrypoint.
Yes, that's definitely the simplest solution, but, IMO, not the safest one. So, I'd prefer to build on your initial suggestion and Arnd's advice and create a new device driver to disable the IMR once Linux is running. But, yes, if that eventually proves unfeasible, I might just have the bootloader disable the protection right before booting the OS.
> > Best regards, > > Pavel >
| |