[RTEMS Project] #4243: rtems_cache_coherent_allocate fallback is to return heap memory

RTEMS trac trac at rtems.org
Mon Feb 15 22:24:46 UTC 2021


#4243: rtems_cache_coherent_allocate fallback is to return heap memory
-------------------------+---------------------
 Reporter:  Chris Johns  |       Owner:  (none)
     Type:  defect       |      Status:  new
 Priority:  normal       |   Milestone:  6.1
Component:  lib          |     Version:  6
 Severity:  normal       |  Resolution:
 Keywords:               |  Blocked By:
 Blocking:               |
-------------------------+---------------------

Comment (by Chris Johns):

 I have performed further testing and investigation of PCI memory on a
 `mvme2700` board that has PCI hardware. I added support to the `rtemsbsd`
 DMA and `mbuf` DMA bus buffer handlers to offset segment addresses to the
 PCI address space as seen by the PCI master. This offset allowed drivers
 that have a `1:1` physical address mapping to be used unchanged.

 I have observed that cache coherent `IO_PAGE` memory and heap allocated
 memory behave the same. This testing is limited and may appear to be
 working but I am not sure and in large applications where there is cache
 pressures things may break. I think `IO_PAGE` memory on a PowerPC is
 required and I will commit the change to add cache coherent memory.

 Note, using a cache coherent memory heap may not be compatible with legacy
 network drivers. Those drivers need to be updated to also use this memory.
 On the PowerPC the limited number of BATs clashes and the BSP does not
 know it is linked to LibBSD or the Legacy stack so adding memory cannot be
 conditional. Legacy driver updates are made more complicated because the
 `i386` is not using the `rtemsbsd` buf interface in LibBSD and the cache
 coherent support.

--
Ticket URL: <http://devel.rtems.org/ticket/4243#comment:1>
RTEMS Project <http://www.rtems.org/>
RTEMS Project


More information about the bugs mailing list