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