[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 36/47] Page request: Process incoming page re
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [Qemu-devel] [PATCH v4 36/47] Page request: Process incoming page request |
Date: |
Wed, 8 Oct 2014 09:18:20 +0100 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
* zhanghailiang (address@hidden) wrote:
> On 2014/10/8 15:49, Dr. David Alan Gilbert wrote:
> >* zhanghailiang (address@hidden) wrote:
> >
> >>> typedef struct Visitor Visitor;
> >>>@@ -80,6 +81,6 @@ typedef struct FWCfgState FWCfgState;
> >>> typedef struct PcGuestInfo PcGuestInfo;
> >>> typedef struct PostcopyPMI PostcopyPMI;
> >>> typedef struct Range Range;
> >>>-typedef struct AdapterInfo AdapterInfo;
> >>>+typedef struct RAMBlock RAMBlock;
> >>>
> >>
> >>:(, another redefinition, 'RAMBlock' also defined in
> >>'include/exec/cpu-all.h:314',
> >>Am i miss something when compile qemu?
> >
> >Interesting; I'm not seeing that problem at all (gcc 4.8.3-7)
> >
> >What compiler and flags are you using?
> >
> >Dave
> >
>
> Hi Dave,
>
> My compiler info:
> gcc (SUSE Linux) 4.3.4
>
> The configure info is:
> #./configure --target-list=x86_64-softmmu --enable-debug --disable-gtk
> ...
> CFLAGS -pthread -I/usr/include/glib-2.0
> -I/usr/lib64/glib-2.0/include -g
> QEMU_CFLAGS -fPIE -DPIE -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
> -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef
> -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common
> -Wendif-labels -Wmissing-include-dirs -Wempty-body -Wnested-externs
> -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers
> -Wold-style-declaration -Wold-style-definition -Wtype-limits
> -fstack-protector-all -I/usr/include/libpng12 -I/usr/include/pixman-1
> LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g
> ...
>
> Maybe its gcc's limitation, but why this redefinition need? After i remove
> one,
> it compiles successfully;)
OK, thanks. I'll clean them up.
Dave
>
> Thanks,
> zhanghailiang
>
> >
> >>
> >>> #endif /* QEMU_TYPEDEFS_H */
> >>>diff --git a/migration.c b/migration.c
> >>>index cfdaa52..63d7699 100644
> >>>--- a/migration.c
> >>>+++ b/migration.c
> >>>@@ -26,6 +26,8 @@
> >>> #include "qemu/thread.h"
> >>> #include "qmp-commands.h"
> >>> #include "trace.h"
> >>>+#include "exec/memory.h"
> >>>+#include "exec/address-spaces.h"
> >>>
> >>> //#define DEBUG_MIGRATION
> >>>
> >>>@@ -504,6 +506,15 @@ static void migrate_fd_cleanup(void *opaque)
> >>>
> >>> migrate_fd_cleanup_src_rp(s);
> >>>
> >>>+ /* This queue generally should be empty - but in the case of a failed
> >>>+ * migration might have some droppings in.
> >>>+ */
> >>>+ struct MigrationSrcPageRequest *mspr, *next_mspr;
> >>>+ QSIMPLEQ_FOREACH_SAFE(mspr, &s->src_page_requests, next_req,
> >>>next_mspr) {
> >>>+ QSIMPLEQ_REMOVE_HEAD(&s->src_page_requests, next_req);
> >>>+ g_free(mspr);
> >>>+ }
> >>>+
> >>> if (s->file) {
> >>> trace_migrate_fd_cleanup();
> >>> qemu_mutex_unlock_iothread();
> >>>@@ -610,6 +621,9 @@ MigrationState *migrate_init(const MigrationParams
> >>>*params)
> >>> s->state = MIG_STATE_SETUP;
> >>> trace_migrate_set_state(MIG_STATE_SETUP);
> >>>
> >>>+ qemu_mutex_init(&s->src_page_req_mutex);
> >>>+ QSIMPLEQ_INIT(&s->src_page_requests);
> >>>+
> >>> s->total_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
> >>> return s;
> >>> }
> >>>@@ -823,7 +837,25 @@ static void source_return_path_bad(MigrationState *s)
> >>> static void migrate_handle_rp_reqpages(MigrationState *ms, const char*
> >>> rbname,
> >>> ram_addr_t start, ram_addr_t len)
> >>> {
> >>>- DPRINTF("migrate_handle_rp_reqpages: at %zx for len %zx", start, len);
> >>>+ DPRINTF("migrate_handle_rp_reqpages: in %s start %zx len %zx",
> >>>+ rbname, start, len);
> >>>+
> >>>+ /* Round everything up to our host page size */
> >>>+ long our_host_ps = sysconf(_SC_PAGESIZE);
> >>>+ if (start & (our_host_ps-1)) {
> >>>+ long roundings = start & (our_host_ps-1);
> >>>+ start -= roundings;
> >>>+ len += roundings;
> >>>+ }
> >>>+ if (len & (our_host_ps-1)) {
> >>>+ long roundings = len & (our_host_ps-1);
> >>>+ len -= roundings;
> >>>+ len += our_host_ps;
> >>>+ }
> >>>+
> >>>+ if (ram_save_queue_pages(ms, rbname, start, len)) {
> >>>+ source_return_path_bad(ms);
> >>>+ }
> >>> }
> >>>
> >>> /*
> >>>
> >>
> >>
> >--
> >Dr. David Alan Gilbert / address@hidden / Manchester, UK
> >
> >.
> >
>
>
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK
- Re: [Qemu-devel] [PATCH v4 32/47] postcopy: ram_enable_notify to switch on userfault, (continued)
[Qemu-devel] [PATCH v4 37/47] Page request: Consume pages off the post-copy queue, Dr. David Alan Gilbert (git), 2014/10/03
[Qemu-devel] [PATCH v4 38/47] Add assertion to check migration_dirty_pages, Dr. David Alan Gilbert (git), 2014/10/03
[Qemu-devel] [PATCH v4 40/47] Postcopy: Use helpers to map pages during migration, Dr. David Alan Gilbert (git), 2014/10/03
[Qemu-devel] [PATCH v4 41/47] qemu_ram_block_from_host, Dr. David Alan Gilbert (git), 2014/10/03
[Qemu-devel] [PATCH v4 42/47] Don't sync dirty bitmaps in postcopy, Dr. David Alan Gilbert (git), 2014/10/03