bool romd_mode;
bool readonly;
bool nonvolatile;
+ bool has_coalesced_range;
};
#define FOR_EACH_FLAT_RANGE(var, view) \
fr.romd_mode = mr->romd_mode;
fr.readonly = readonly;
fr.nonvolatile = nonvolatile;
+ fr.has_coalesced_range = false;
/* Render the region itself into any gaps left by the current view. */
for (i = 0; i < view->nr && int128_nz(remain); ++i) {
static void flat_range_coalesced_io_del(FlatRange *fr, AddressSpace *as)
{
+ if (!fr->has_coalesced_range) {
+ return;
+ }
+
MEMORY_LISTENER_UPDATE_REGION(fr, as, Reverse, coalesced_io_del,
int128_get64(fr->addr.start),
int128_get64(fr->addr.size));
CoalescedMemoryRange *cmr;
AddrRange tmp;
+ if (QTAILQ_EMPTY(&mr->coalesced)) {
+ return;
+ }
+
+ fr->has_coalesced_range = true;
QTAILQ_FOREACH(cmr, &mr->coalesced, link) {
tmp = addrrange_shift(cmr->addr,
int128_sub(fr->addr.start,