From mboxrd@z Thu Jan 1 00:00:00 1970 From: geoff@infradead.org (Geoff Levand) Date: Tue, 26 Aug 2014 15:32:28 -0700 Subject: Kexec on arm64 In-Reply-To: References: <1406162287.4062.39.camel@smoke> <20140724093603.GC4079@leverpostej> <1406247468.4062.59.camel@smoke> <1406333901.4062.69.camel@smoke> <20140728153812.GA2576@leverpostej> <1406592548.28348.49.camel@smoke> <20140729133557.GQ2576@leverpostej> <1406668741.28348.75.camel@smoke> <1407172869.8971.54.camel@smoke> <1407442058.8971.106.camel@smoke> Message-ID: <1409092348.21254.9.camel@smoke> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Arun, On Wed, 2014-08-13 at 16:39 +0530, Arun Chandran wrote: > I have one more concern regarding flushing of D-cache area corresponding > to the kexec_list entrees. > > Currently kexec_list_walk() is doing > > 1) flush_dcache_area of the kexec_list[0] till PAGE_SIZE > > 2) continue accessing entries in kexec_list[0] to PAGE_SIZE > > 3) switch to next kexec_list depending upon kexec_list[entry] & flag > == IND_INDIRECTION > > 4) goto 1 > > Shouldn't that be doing flush_dcache_area() after completely using the list?? We just want to get any data in the dcache out to the PoC before disabling the dcache, so as long as there are only reads, and no writes to those addresses, kexec_list_walk() should work OK. I will move the flush of the new kernel image to after it is copied in relocate_new_kernel(). I think that your L3 cache may not work with what we have now: current: invalidate dcache -> turn off dcache -> write data to PoC proposed: turn off dcache -> write data to PoC -> invalidate dcache -Geoff