Commit f6790af6 authored by Avi Kivity's avatar Avi Kivity
Browse files

memory: use AddressSpace for MemoryListener filtering



Using the AddressSpace type reduces confusion, as you can't accidentally
supply the MemoryRegion you're interested in.

Reviewed-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent 1d71148e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -33,6 +33,9 @@ MemoryRegion *get_system_memory(void);
 */
MemoryRegion *get_system_io(void);

extern AddressSpace address_space_memory;
extern AddressSpace address_space_io;

#endif

#endif
+5 −5
Original line number Diff line number Diff line
@@ -116,8 +116,8 @@ RAMList ram_list = { .blocks = QLIST_HEAD_INITIALIZER(ram_list.blocks) };
static MemoryRegion *system_memory;
static MemoryRegion *system_io;

static AddressSpace address_space_io;
static AddressSpace address_space_memory;
AddressSpace address_space_io;
AddressSpace address_space_memory;

MemoryRegion io_mem_ram, io_mem_rom, io_mem_unassigned, io_mem_notdirty;
static MemoryRegion io_mem_subpage_ram;
@@ -3249,9 +3249,9 @@ static void memory_map_init(void)
    address_space_init(&address_space_io, system_io);
    address_space_io.name = "I/O";

    memory_listener_register(&core_memory_listener, system_memory);
    memory_listener_register(&io_memory_listener, system_io);
    memory_listener_register(&tcg_memory_listener, system_memory);
    memory_listener_register(&core_memory_listener, &address_space_memory);
    memory_listener_register(&io_memory_listener, &address_space_io);
    memory_listener_register(&tcg_memory_listener, &address_space_memory);
}

MemoryRegion *get_system_memory(void)
+1 −2
Original line number Diff line number Diff line
@@ -1507,8 +1507,7 @@ static int vfio_connect_container(VFIOGroup *group)
        container->iommu_data.listener = vfio_memory_listener;
        container->iommu_data.release = vfio_listener_release;

        memory_listener_register(&container->iommu_data.listener,
                                 get_system_memory());
        memory_listener_register(&container->iommu_data.listener, &address_space_memory);
    } else {
        error_report("vfio: No available IOMMU models\n");
        g_free(container);
+1 −1
Original line number Diff line number Diff line
@@ -792,7 +792,7 @@ int vhost_dev_init(struct vhost_dev *hdev, int devfd, const char *devpath,
    hdev->log_size = 0;
    hdev->log_enabled = false;
    hdev->started = false;
    memory_listener_register(&hdev->memory_listener, get_system_memory());
    memory_listener_register(&hdev->memory_listener, &address_space_memory);
    hdev->force = force;
    return 0;
fail:
+2 −2
Original line number Diff line number Diff line
@@ -749,8 +749,8 @@ static int xen_pt_initfn(PCIDevice *d)
    }

out:
    memory_listener_register(&s->memory_listener, get_system_memory());
    memory_listener_register(&s->io_listener, get_system_io());
    memory_listener_register(&s->memory_listener, &address_space_memory);
    memory_listener_register(&s->io_listener, &address_space_io);
    XEN_PT_LOG(d, "Real physical device %02x:%02x.%d registered successfuly!\n",
               bus, slot, func);

Loading