On 11 May 2016 at 12:22, Mark Rutland <[email protected]> wrote:
> On Wed, May 11, 2016 at 12:07:51PM +0200, Ard Biesheuvel wrote:
>> On 11 May 2016 at 11:35, Achin Gupta <[email protected]> wrote:
>> >> diff --git 
>> >> a/ArmPkg/Library/ArmCacheMaintenanceLib/ArmCacheMaintenanceLib.c 
>> >> b/ArmPkg/Library/ArmCacheMaintenanceLib/ArmCacheMaintenanceLib.c
>> >> index 1045f9068f4d..cc7555061428 100644
>> >> --- a/ArmPkg/Library/ArmCacheMaintenanceLib/ArmCacheMaintenanceLib.c
>> >> +++ b/ArmPkg/Library/ArmCacheMaintenanceLib/ArmCacheMaintenanceLib.c
>> >> @@ -65,7 +65,8 @@ InvalidateInstructionCacheRange (
>> >>    )
>> >>  {
>> >>    CacheRangeOperation (Address, Length, 
>> >> ArmCleanDataCacheEntryToPoUByMVA);
>> >> -  ArmInvalidateInstructionCache ();
>> >> +  CacheRangeOperation (Address, Length,
>> >> +    ArmInvalidateInstructionCacheEntryToPoUByMVA);
>> >
>> > Afaics, CacheRangeOperation() uses the data cache line length by default. 
>> > This
>> > will match the I$ line length in most cases. But, it would be better to 
>> > use the
>> > ArmInstructionCacheLineLength() function instead. I suggest that we add a 
>> > cache
>> > line length parameter to CacheRangeOperation() to allow the distinction.
>> >
>>
>> Good point.
>>
>> > Also, from my reading of the ARMv8 ARM B2.6.5 & E2.6.5, we need an ISB at 
>> > the
>> > end of all the operations.
>> >
>>
>> I would assume that a single call to
>> ArmInstructionSynchronizationBarrier() at the end of
>> InvalidateInstructionCacheRange () should suffice?
>
> Almost. You also need DSBs to complete the maintenance ops. e.g. a
> sequence:
>
>         d-cache maintenance ops
>         DSB
>         i-cache maintenance ops
>         DSB
>         ISB
>

Yes, but the DSB is already performed by CacheRangeOperation (). So
adding the ISB in InvalidateInstructionCacheRange () results in
exactly the above.

Thanks,
Ard.
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to