On 5/25/20 12:20 PM, Paolo Bonzini wrote: > On 25/05/20 03:18, Yan Zhao wrote: >> On Thu, May 21, 2020 at 04:38:47PM +0200, Paolo Bonzini wrote: >>> On 30/04/20 11:40, Peter Maydell wrote: >>>>> This does not "drop" a write to a r/o region -- it causes it to generate >>>>> whatever the guest architecture's equivalent of a bus error is (eg data >>>>> abort on Arm). >>> >>> >>>> More generally, this change seems a bit odd: currently we do not >>>> check the mr->readonly flag here, but in general guests don't get >>>> to write to ROM areas. Where is that check currently done >>> >>> Writes to ROM are directed to mr->ops unassigned_mem_ops. Because _all_ >>> ram-device reads and writes go through the ops, for ram-device we have >>> to stick the check for mr->readonly in the ops. >>> >>> On one hand, I was quite surprised to see that unassigned_mem_write does >>> not return MEMTX_ERROR now that I looked at it. >>> >>> On the other hand, we should use MEMTX_ERROR in patch 2 as well, if we >>> decide it's the way to go. >>> >>> (Sorry Yan for the late response). >>> >> hi Paolo, >> thanks for your reply and never mind :) >> >> But there's one thing I just can't figure out the reason and eagerly need >> your guide. >> >> why do we have to convert all .write operations to .write_with_attrs and >> return MEMTX_ERROR? because of the handling of writes to read-only region? > > 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)? Phil.