I've got XAPP1078 running just fine, and I've been reviewing its implementation details to better understand how it works.
Something that concerns me is it seems that Linux instantiates a pool allocator which takes ownership of all of the OCM memory. This is indicated by the startup message:
zynq-ocm f800c000.ocmc: ZYNQ OCM pool: 256 KiB @ 0x70880000
If I understand the ocmc driver source correctly, then all of the 256 kB of the OCM has been mapped as a single contiguous pool. The power management code then allocates from that pool for some purpose later.
However, we are hand-placing the CPU1 start address in the middle of that pool.
How can we mark some fraction of the pool as reserved to ensure that the the pool allocator doesn't inadvertently pass out memory that we would rather use for communication between CPU0 and CPU1? For example, can we limit it to 192 kB somehow? I don't see any relevant options in either the driver source or in the plain-text device tree.