mirror of https://github.com/xemu-project/xemu.git
qemu_ram_foreach_block: pass up error value, and down the ramblock name
check the return value of the function it calls and error if it's non-0 Fixup qemu_rdma_init_one_block that is the only current caller, and rdma_add_block the only function it calls using it. Pass the name of the ramblock to the function; helps in debugging. Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Amit Shah <amit.shah@redhat.com> Reviewed-by: Michael R. Hines <mrhines@us.ibm.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
f796baa1b3
commit
e3807054e2
10
exec.c
10
exec.c
|
@ -3345,14 +3345,20 @@ bool cpu_physical_memory_is_io(hwaddr phys_addr)
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
void qemu_ram_foreach_block(RAMBlockIterFunc func, void *opaque)
|
int qemu_ram_foreach_block(RAMBlockIterFunc func, void *opaque)
|
||||||
{
|
{
|
||||||
RAMBlock *block;
|
RAMBlock *block;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
QLIST_FOREACH_RCU(block, &ram_list.blocks, next) {
|
QLIST_FOREACH_RCU(block, &ram_list.blocks, next) {
|
||||||
func(block->host, block->offset, block->used_length, opaque);
|
ret = func(block->idstr, block->host, block->offset,
|
||||||
|
block->used_length, opaque);
|
||||||
|
if (ret) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -126,10 +126,10 @@ void cpu_flush_icache_range(hwaddr start, int len);
|
||||||
extern struct MemoryRegion io_mem_rom;
|
extern struct MemoryRegion io_mem_rom;
|
||||||
extern struct MemoryRegion io_mem_notdirty;
|
extern struct MemoryRegion io_mem_notdirty;
|
||||||
|
|
||||||
typedef void (RAMBlockIterFunc)(void *host_addr,
|
typedef int (RAMBlockIterFunc)(const char *block_name, void *host_addr,
|
||||||
ram_addr_t offset, ram_addr_t length, void *opaque);
|
ram_addr_t offset, ram_addr_t length, void *opaque);
|
||||||
|
|
||||||
void qemu_ram_foreach_block(RAMBlockIterFunc func, void *opaque);
|
int qemu_ram_foreach_block(RAMBlockIterFunc func, void *opaque);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -570,10 +570,10 @@ static int rdma_add_block(RDMAContext *rdma, void *host_addr,
|
||||||
* in advanced before the migration starts. This tells us where the RAM blocks
|
* in advanced before the migration starts. This tells us where the RAM blocks
|
||||||
* are so that we can register them individually.
|
* are so that we can register them individually.
|
||||||
*/
|
*/
|
||||||
static void qemu_rdma_init_one_block(void *host_addr,
|
static int qemu_rdma_init_one_block(const char *block_name, void *host_addr,
|
||||||
ram_addr_t block_offset, ram_addr_t length, void *opaque)
|
ram_addr_t block_offset, ram_addr_t length, void *opaque)
|
||||||
{
|
{
|
||||||
rdma_add_block(opaque, host_addr, block_offset, length);
|
return rdma_add_block(opaque, host_addr, block_offset, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue