[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH 16/22] plat/kvm: Disable D-Cache before doing any change for Arm64
On 09/11/2018 07:36, Wei Chen (Arm Technology China) wrote: Hi Julien, Hi, -----Original Message----- From: Julien Grall <julien.grall@xxxxxxx> Sent: 2018年11月8日 20:20 To: Wei Chen (Arm Technology China) <Wei.Chen@xxxxxxx>; minios- devel@xxxxxxxxxxxxxxxxxxxx; simon.kuenzer@xxxxxxxxx Cc: Kaly Xin (Arm Technology China) <Kaly.Xin@xxxxxxx>; nd <nd@xxxxxxx> Subject: Re: [Minios-devel] [UNIKRAFT PATCH 16/22] plat/kvm: Disable D-Cache before doing any change for Arm64 Hi, On 11/8/18 9:51 AM, Wei Chen wrote:Disable the D-Cache before doing anything change, This will help us to avoid doing clean the D-Cache for changed area.NAcked-by: Julien Grall <julien.grall@xxxxxxx> I am pretty sure we discussed about it in the previous series. D-Cache disable means the cache will be bypassed. The processor may still speculatively load cache line behind your back. So if you change memory with cache disable, then you need to invalidate the cache to ensure there are no stall data in it. Furthermore, for data you write with cache disabled, you need to know whether the cache was cleaned to PoC for the region you modify. The protocol you use should tell you what is the guarantee here. If there are no guarantee, then you need to clean to PoC the region you are about to modify. For instance, the Linux Image protocol will guarantee that the DTB, Kernel, Initramfs will be clean to PoC. The rest of the memory is unknown. As you use ELF, I invite you to look at what are the guarantees here.I think I had mis-understood your previous comment. So I call clean_and_invalidate_dcache_range at the very beginning, should I cover the whole RAM area? Because I don't know the areas that had been cached. You don't know the size of the RAM either. But it would be expensive to flush the whole cache. In your case, you only need to cover what you are going to use (i.e the kernel, BSS, bootstack and page-tables). And I do clean_and_invalidate_dcache_range at the very beginning, should I Keep the clean_and_invalidate_dcache_range operation in start MMU function? Yes. Note that you need to do the clean & invalidate before re-enabling the cache. Cheers, -- Julien Grall _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |