So that the caller can check the result of NotifyRamDiscard() handler if the operation fails.
Signed-off-by: Chenyi Qiang <chenyi.qi...@intel.com> --- Changes in v5: - Revert to use of NotifyRamDiscard() Changes in v4: - Newly added. --- hw/vfio/listener.c | 6 ++++-- include/system/memory.h | 4 ++-- system/ram-block-attribute.c | 3 +-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/hw/vfio/listener.c b/hw/vfio/listener.c index bfacb3d8d9..06454e0584 100644 --- a/hw/vfio/listener.c +++ b/hw/vfio/listener.c @@ -190,8 +190,8 @@ out: rcu_read_unlock(); } -static void vfio_ram_discard_notify_discard(RamDiscardListener *rdl, - MemoryRegionSection *section) +static int vfio_ram_discard_notify_discard(RamDiscardListener *rdl, + MemoryRegionSection *section) { VFIORamDiscardListener *vrdl = container_of(rdl, VFIORamDiscardListener, listener); @@ -206,6 +206,8 @@ static void vfio_ram_discard_notify_discard(RamDiscardListener *rdl, error_report("%s: vfio_container_dma_unmap() failed: %s", __func__, strerror(-ret)); } + + return ret; } static int vfio_ram_discard_notify_populate(RamDiscardListener *rdl, diff --git a/include/system/memory.h b/include/system/memory.h index 83b28551c4..e5155120d9 100644 --- a/include/system/memory.h +++ b/include/system/memory.h @@ -518,8 +518,8 @@ struct IOMMUMemoryRegionClass { typedef struct RamDiscardListener RamDiscardListener; typedef int (*NotifyRamPopulate)(RamDiscardListener *rdl, MemoryRegionSection *section); -typedef void (*NotifyRamDiscard)(RamDiscardListener *rdl, - MemoryRegionSection *section); +typedef int (*NotifyRamDiscard)(RamDiscardListener *rdl, + MemoryRegionSection *section); struct RamDiscardListener { /* diff --git a/system/ram-block-attribute.c b/system/ram-block-attribute.c index f12dd4b881..896c3d7543 100644 --- a/system/ram-block-attribute.c +++ b/system/ram-block-attribute.c @@ -66,8 +66,7 @@ static int ram_block_attribute_notify_discard_cb(MemoryRegionSection *section, { RamDiscardListener *rdl = arg; - rdl->notify_discard(rdl, section); - return 0; + return rdl->notify_discard(rdl, section); } static int -- 2.43.5