[PATCH v12 08/16] arm64/kexec: Add core kexec support
Geoff Levand
geoff at infradead.org
Wed Dec 2 13:08:33 PST 2015
Hi Mark,
On Tue, 2015-12-01 at 19:03 +0000, Mark Rutland wrote:
> You can validly perform maintenance while the cache may allocate for a
> region of memory, it's just that afterwards the cache may hold a clean
> entries for that region.
>
> You can clean/clean+invalidate to push data to the PoC, or you can
> invalidate/clean+invalidate to ensure that no asynchronous writebacks
> occur later (so long as you do not make a cacheable write to said
> cacheline).
>
> The only thing that you cannot guarantee is that there is not some clean
> cacheline allocated for a region of memory to which cacheable accesses
> may be performed.
>
> Note that the kernel only requires its Image to be clean to the PoC. So
> long as this is true, we know that there will not be asynchrnoous
> writebacks, and can invalidate as necessary as part of the boot process.
In v10, which worked for Mustang and Qualcomm, we had:
clean+invalidate to PoC all source pages
disable d-cache
loop {
invalidate to PoC destination page
copy page source->destination
}
enter new image
In v11 I changed this, and it did not work for those platforms:
clean+invalidate to PoC all source pages
clean+invalidate to PoC all destination pages
disable d-cache
loop {
copy page source->destination
}
enter new image
Based on your comments above I would think both should work OK.
-Geoff
More information about the kexec
mailing list