[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 24/30] exec: separate current radix tree from th
From: |
Jan Kiszka |
Subject: |
Re: [Qemu-devel] [PATCH 24/30] exec: separate current radix tree from the one being built |
Date: |
Tue, 02 Jul 2013 16:41:29 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 |
On 2013-06-28 20:26, Paolo Bonzini wrote:
> This same treatment previously done to phys_node_map and phys_sections
> is now applied to the dispatch field of AddressSpace. Topology updates
> use as->next_dispatch while accesses use as->dispatch.
>
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
> exec.c | 23 ++++++++++++++++-------
> include/exec/memory.h | 1 +
> 2 files changed, 17 insertions(+), 7 deletions(-)
>
> diff --git a/exec.c b/exec.c
> index dffdf23..0d852ee 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -855,7 +855,7 @@ static void register_multipage(AddressSpaceDispatch *d,
> static void mem_add(MemoryListener *listener, MemoryRegionSection *section)
> {
> AddressSpace *as = container_of(listener, AddressSpace,
> dispatch_listener);
> - AddressSpaceDispatch *d = as->dispatch;
> + AddressSpaceDispatch *d = as->next_dispatch;
> MemoryRegionSection now = *section, remain = *section;
> Int128 page_size = int128_make64(TARGET_PAGE_SIZE);
>
> @@ -1718,9 +1718,21 @@ static void io_mem_init(void)
> static void mem_begin(MemoryListener *listener)
> {
> AddressSpace *as = container_of(listener, AddressSpace,
> dispatch_listener);
> + AddressSpaceDispatch *d = g_new(AddressSpaceDispatch, 1);
> +
> + d->phys_map = (PhysPageEntry) { .ptr = PHYS_MAP_NODE_NIL, .is_leaf = 0
> };
> + d->as = as;
> + as->next_dispatch = d;
> +}
> +
> +static void mem_commit(MemoryListener *listener)
> +{
> + AddressSpace *as = container_of(listener, AddressSpace,
> dispatch_listener);
> AddressSpaceDispatch *d = as->dispatch;
>
> - d->phys_map.ptr = PHYS_MAP_NODE_NIL;
> + /* cur_map will soon be switched to next_map, too. */
> + as->dispatch = as->next_dispatch;
> + g_free(d);
> }
>
> static void core_begin(MemoryListener *listener)
> @@ -1784,13 +1796,10 @@ static MemoryListener tcg_memory_listener = {
>
> void address_space_init_dispatch(AddressSpace *as)
> {
> - AddressSpaceDispatch *d = g_new(AddressSpaceDispatch, 1);
> -
> - d->phys_map = (PhysPageEntry) { .ptr = PHYS_MAP_NODE_NIL, .is_leaf = 0
> };
> - d->as = as;
> - as->dispatch = d;
> + as->dispatch = NULL;
> as->dispatch_listener = (MemoryListener) {
> .begin = mem_begin,
> + .commit = mem_commit,
> .region_add = mem_add,
> .region_nop = mem_add,
> .priority = 0,
> diff --git a/include/exec/memory.h b/include/exec/memory.h
> index 1cd1f50..b21a460 100644
> --- a/include/exec/memory.h
> +++ b/include/exec/memory.h
> @@ -212,6 +212,7 @@ struct AddressSpace {
> int ioeventfd_nb;
> struct MemoryRegionIoeventfd *ioeventfds;
> struct AddressSpaceDispatch *dispatch;
> + struct AddressSpaceDispatch *next_dispatch;
> MemoryListener dispatch_listener;
>
> QTAILQ_ENTRY(AddressSpace) address_spaces_link;
>
Reviewed-by: Jan Kiszka <address@hidden>
Jan
--
Siemens AG, Corporate Technology, CT RTC ITP SES-DE
Corporate Competence Center Embedded Linux
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH 24/30] exec: separate current radix tree from the one being built,
Jan Kiszka <=