On Mon, May 25, 2020 at 01:04:56PM +0200, Paolo Bonzini wrote: > On 25/05/20 12:54, Philippe Mathieu-Daudé wrote: > >> Not all of them, only those that need to return MEMTX_ERROR. I would > >> like some guidance from Peter as to whether (or when) reads from ROMs > >> should return MEMTX_ERROR. This way, we can use that information to > >> device what the read-only ram-device regions should do. > > Is it only device-specific or might it be partly arch/machine-specific > > (depending on the bus it is mapped)? > > Good point, I think that could be handled by propagating the error up in > the memory region hierarchy (i.e. the cached AddressSpaceDispatch radix > tree is used in the common case, but when you have a failure you > percolate it up through the whole hierarchy since that's not a fast path). > > but if we decide to propagate the error up by providing with ops->write_with_attrs, then we have to remove ops->write correspondingly. as in
memory_region_dispatch_write() { ... if (mr->ops->write) { return access_with_adjusted_size(addr, &data, size, mr->ops->impl.min_access_size, mr->ops->impl.max_access_size, memory_region_write_accessor, mr, attrs); } else { return access_with_adjusted_size(addr, &data, size, mr->ops->impl.min_access_size, mr->ops->impl.max_access_size, memory_region_write_with_attrs_accessor, mr, attrs); } ... } so which regions should keep ops->write and which regions should not? Thanks Yan