Note: lists.riscv.org will be down for maintenance on Wednesday, October 5th, starting at 9AM Pacific Time (4PM Wednesday October 5, 2022 UTC), for approximately one hour.
Accesses by one hart to main memory regions are observable not only by other harts but also
by other devices with the capability to initiate requests in the main memory system (e.g., DMA
engines). Coherent main memory regions always have either the RVWMO or RVTSO memory
model. Incoherent main memory regions have an implementation-defined memory model.
The above is the core normative piece discussion coherent initiators.
It's confusing because the "observable" statement in the first sentence is indirectly overridden by the consideration of incoherent main memory.
It may be enough to add additional wording in the platform spec that for platforms that behave differently for NoSnoop=1 inbound TLPs (vs ignoring them and treating them as NoSnoop=0) the region of addresses accessed in that manner should be communicated as having "incoherent" PMA generally in the system.
But it also implies that there's no standard memory model for incoherent memory. Is the use of RVWMO+Zicmobose sufficient, or is more needed to describe a portable memory model in this case?