[PATCH] testsuite/spcache01: Clear allocated coherent cache memory

Chris Johns chrisj at rtems.org
Wed Oct 20 03:24:51 UTC 2021


On 20/10/21 2:46 am, Christian MAUDERER wrote:
> Am 19.10.21 um 16:48 schrieb Sebastian Huber:
>>
>>
>> On 18/10/2021 23:08, Chris Johns wrote:
>>> On 18/10/21 8:37 pm, Sebastian Huber wrote:
>>>> On 18/10/2021 09:53, Chris Johns wrote:
>>>>> On 18/10/21 4:50 pm, Sebastian Huber wrote:
>>>>>> On 18/10/2021 07:19,chrisj at rtems.org   wrote:
>>>>>>> From: Chris Johns<chrisj at rtems.org>
>>>>>>>
>>>>>>> - Coherent cache memory is used in libbsd for things like descriptors
>>>>>>>      and it optionally clears the memory on allocation. Test is works.
>>>>>> There is no guarantee that memset() and memcpy() work with cache coherent
>>>>>> memory. Such memory areas may disallow misaligned access for example.
>>>>> That seems reasonable however this change about testing the implicit
>>>>> requirements we have that memset works. LibBSD requires memset works ...
>>>>>
>>>>> https://git.rtems.org/rtems-libbsd/tree/rtemsbsd/rtems/rtems-kernel-bus-dma.c?h=6-freebsd-12#n260
>>>>>
>>>>>
>>>> Using memset() here could be a bug in libbsd.
>>> Yes, I also think so.
>>>
>>> But what is a suitable mechanism to make sure the arch or BSP handle it
>>> correctly? Maybe a clear routine in libbsd using the bus space API? That
>>> interface has to work or the drivers will not work.
>>
>> I think we had similar issues on another BSP. Christian, do you remember how
>> we solved this?
>>
> 
> I remember mainly problems with copying memory. I think the last time it
> resulted in an ugly "copy_from/to_io" function on the atsam:
> 
>   https://git.rtems.org/rtems/tree/bsps/arm/atsam/start/iocopy.c
> 

Thanks.

> The bus_space_* functions should work. Only problem is that a valid
> bus_space_tag is missing in this context. I think x86 uses it. I think for all
> other platforms it is unused.

I used the direct methods because it is internal and I think it is safe to
assume this is a linear address being returned from the allocator?

I have posted a patch which is working on the Versal. It is not optimized and
does not attempt to detect alignments to use larger word sizes for faster
clears. The amount of memory being allocated is not large.

Chris


More information about the devel mailing list