qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] 9157ee: Move parallel_hds_isa_init to hw/isa/


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] 9157ee: Move parallel_hds_isa_init to hw/isa/isa-bus.c
Date: Mon, 08 Jun 2015 09:30:07 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 9157eee1b1c076ff3316361b760e891dda13e9bf
      
https://github.com/qemu/qemu/commit/9157eee1b1c076ff3316361b760e891dda13e9bf
  Author: Miroslav Rezanina <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/char/parallel.c
    M hw/isa/isa-bus.c

  Log Message:
  -----------
  Move parallel_hds_isa_init to hw/isa/isa-bus.c

Disabling CONFIG_PARALLEL cause removing parallel_hds_isa_init defined in
parallel.c. This function is called during initialization of some boards so
disabling CONFIG_PARALLEL cause build failure.

This patch moves parallel_hds_isa_init to hw/isa/isa-bus.c so it is included
in case of disabled CONFIG_PARALLEL. Build is successful but qemu will abort
with "Unknown device" error when function is called.

Signed-off-by: Miroslav Rezanina <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: dae02ba55a66cb3194a2410c7725734e5bc6166f
      
https://github.com/qemu/qemu/commit/dae02ba55a66cb3194a2410c7725734e5bc6166f
  Author: Laurent Vivier <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M kvm-all.c

  Log Message:
  -----------
  ppc: add helpful message when KVM fails to start VCPU

On POWER8 systems, KVM checks if VCPU is running on primary threads,
and that secondary threads are offline. If this is not the case,
ioctl() fails with errno set to EBUSY.

QEMU aborts with a non explicit error message:
$ ./qemu-system-ppc64 --nographic -machine pseries,accel=kvm
error: kvm run failed Device or resource busy

To help user to diagnose the problem, this patch adds an informative
error message.

There is no easy way to check if SMT is enabled before starting the VCPU,
and as this case is the only one setting errno to EBUSY, we just check
the errno value to display a message.

Signed-off-by: Laurent Vivier <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: e4afbf4fb4d026510700cb40bb72dea9aef14e3b
      
https://github.com/qemu/qemu/commit/e4afbf4fb4d026510700cb40bb72dea9aef14e3b
  Author: Fam Zheng <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M qemu-nbd.c

  Log Message:
  -----------
  qemu-nbd: Switch to qemu_set_fd_handler

Achieved by:

- Remembering the server fd with a global variable, in order to access
  it from nbd_client_closed.

- Checking nbd_can_accept() and updating server_fd handler whenever
  client connects or disconnects.

Signed-off-by: Fam Zheng <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: db94604b20278c1dc227a04e4c564d80230e6c3f
      
https://github.com/qemu/qemu/commit/db94604b20278c1dc227a04e4c564d80230e6c3f
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M exec.c

  Log Message:
  -----------
  exec: optimize phys_page_set_level

phys_page_set_level is writing zeroes to a struct that has just been
filled in by phys_map_node_alloc.  Instead, tell phys_map_node_alloc
whether to fill in the page "as a leaf" or "as a non-leaf".

memcpy is faster than struct assignment, which copies each bitfield
individually.  A compiler bug (https://gcc.gnu.org/PR66391), and
small memcpys like this one are special-cased anyway, and optimized
to a register move, so just use the memcpy.

This cuts the cost of phys_page_set_level from 25% to 5% when
booting qboot.

Reviewed-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 6b4ad3b28d4a70ad93f287b50200b04766aeb0de
      
https://github.com/qemu/qemu/commit/6b4ad3b28d4a70ad93f287b50200b04766aeb0de
  Author: Peter Crosthwaite <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M Makefile.target

  Log Message:
  -----------
  Makefile.target: set master BUILD_DIR

make can be invoked in the individual build dirs to build an individual
target or just a single file of a target. e.g.

touch translate-all.c
make -C microblazeel-softmmu translate-all.o

There is however a small bug when using the pixman submodule.
config-host.mak will ref BUILD_DIR for the pixman -I CFLAGS:

grep BUILD_DIR config-host.mak
QEMU_CFLAGS=-I$(SRC_PATH)/pixman/pixman -I$(BUILD_DIR)/pixman/pixman ...

This causes a build failure as -I/pixman/pixman (BUILD_DIR=="") will
not be found.

BUILD_DIR is usually set by the top level Makefile. Just lazy-set it in
Makefile.target to the parent directory.

Granted, this will not work if the pixman submodule is not prebuilt,
but it at least means you can do incremental partial builds once you
have done your initial full build (or attempt) from the top level.

The next step would be refactor make infrastructure to rebuild pixman
on a submake like the one above.

Cc: Gerd Hoffmann <address@hidden>
Signed-off-by: Peter Crosthwaite <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: dbddac6da01a13c9d5d162994a0a265173acecab
      
https://github.com/qemu/qemu/commit/dbddac6da01a13c9d5d162994a0a265173acecab
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M include/exec/memory.h
    M memory.c

  Log Message:
  -----------
  memory: the only dirty memory flag for users is DIRTY_MEMORY_VGA

DIRTY_MEMORY_MIGRATION is triggered by memory_global_dirty_log_start
and memory_global_dirty_log_stop, so it cannot be used with
memory_region_set_log.

Specify this in the documentation and assert it.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 086f90e890fb25e7f12fbe72fe5a8078792398aa
      
https://github.com/qemu/qemu/commit/086f90e890fb25e7f12fbe72fe5a8078792398aa
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/display/g364fb.c

  Log Message:
  -----------
  g364fb: remove pointless call to memory_region_set_coalescing

Coalescing work on MMIO, not RAM, thus this call has no effect.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 74259ae55b15bff4ef7b26faa6431a3ff16d7c9d
      
https://github.com/qemu/qemu/commit/74259ae55b15bff4ef7b26faa6431a3ff16d7c9d
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/display/cg3.c
    M hw/display/exynos4210_fimd.c
    M hw/display/g364fb.c
    M hw/display/sm501.c
    M hw/display/tcx.c

  Log Message:
  -----------
  display: enable DIRTY_MEMORY_VGA tracking explicitly

This will be required soon by the memory core.

Tested-by: Aurelien Jarno <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 5299c0f2cf951c23ec681ff87e455d1cf4ec537b
      
https://github.com/qemu/qemu/commit/5299c0f2cf951c23ec681ff87e455d1cf4ec537b
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/display/cg3.c
    M hw/display/g364fb.c
    M hw/display/sm501.c
    M hw/display/tcx.c

  Log Message:
  -----------
  display: add memory_region_sync_dirty_bitmap calls

These are strictly speaking only needed for KVM and Xen, but it's still
nice to be consistent.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 2d1a35bef0ed96b3f23535e459c552414ccdbafd
      
https://github.com/qemu/qemu/commit/2d1a35bef0ed96b3f23535e459c552414ccdbafd
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/display/vmware_vga.c
    M hw/virtio/dataplane/vring.c
    M hw/virtio/vhost.c
    M include/exec/memory.h
    M kvm-all.c
    M memory.c
    M xen-hvm.c

  Log Message:
  -----------
  memory: differentiate memory_region_is_logging and 
memory_region_get_dirty_log_mask

For now memory regions only track DIRTY_MEMORY_VGA individually, but
this will change soon.  To support this, split memory_region_is_logging
in two functions: one that returns a given bit from dirty_log_mask,
and one that returns the entire mask.  memory_region_is_logging gets an
extra parameter so that the compiler flags misuse.

While VGA-specific users (including the Xen listener!) will want to keep
checking that bit, KVM and vhost check for "any bit except migration"
(because migration is handled via the global start/stop listener
callbacks).

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: b2dfd71c4843a762f2befe702adb249cf55baf66
      
https://github.com/qemu/qemu/commit/b2dfd71c4843a762f2befe702adb249cf55baf66
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/virtio/vhost.c
    M include/exec/memory.h
    M kvm-all.c
    M memory.c
    M xen-hvm.c

  Log Message:
  -----------
  memory: prepare for multiple bits in the dirty log mask

When the dirty log mask will also cover other bits than DIRTY_MEMORY_VGA,
some listeners may be interested in the overall zero/non-zero value of
the dirty log mask; others may be interested in the value of single bits.

For this reason, always call log_start/log_stop if bits have respectively
appeared or disappeared, and pass the old and new values of the dirty log
mask so that listeners can distinguish the kinds of change.

For example, KVM checks if dirty logging used to be completely disabled
(in log_start) or is now completely disabled (in log_stop).  On the
other hand, Xen has to check manually if DIRTY_MEMORY_VGA changed,
since that is the only bit it cares about.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: d55d42078bfb507743747b761673507b95a76620
      
https://github.com/qemu/qemu/commit/d55d42078bfb507743747b761673507b95a76620
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/display/framebuffer.c

  Log Message:
  -----------
  framebuffer: check memory_region_is_logging

framebuffer.c expects DIRTY_MEMORY_VGA logging to be always on, but that
will not be the case soon.  Because framebuffer.c computes the memory
region on the fly for every update (with memory_region_find), it cannot
enable/disable logging by itself.

Instead, always treat updates as invalidations if dirty logging is
not enabled, assuming that the board will enable logging on the
RAM region that includes the framebuffer.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 42af3e3a02f6d0c38c46465b7f0311eabf532f77
      
https://github.com/qemu/qemu/commit/42af3e3a02f6d0c38c46465b7f0311eabf532f77
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M include/ui/console.h
    M ui/console.c

  Log Message:
  -----------
  ui/console: remove dpy_gfx_update_dirty

dpy_gfx_update_dirty expects DIRTY_MEMORY_VGA logging to be always on,
but that will not be the case soon.  Because it computes the memory
region on the fly for every update (with memory_region_find), it cannot
enable/disable logging by itself.

We could always treat updates as invalidations if dirty logging is
not enabled, assuming that the board will enable logging on the
RAM region that includes the framebuffer.

However, the function is unused, so just drop it.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 677e7805cf95f3b2bca8baf0888d1ebed7f0c606
      
https://github.com/qemu/qemu/commit/677e7805cf95f3b2bca8baf0888d1ebed7f0c606
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M include/exec/memory.h
    M memory.c

  Log Message:
  -----------
  memory: track DIRTY_MEMORY_CODE in mr->dirty_log_mask

DIRTY_MEMORY_CODE is only needed for TCG.  By adding it directly to
mr->dirty_log_mask, we avoid testing for TCG everywhere a region is
checked for the enabled/disabled state of dirty logging.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: ea8cb1a8d98f5e3822a23a7cecdb4add0f29178b
      
https://github.com/qemu/qemu/commit/ea8cb1a8d98f5e3822a23a7cecdb4add0f29178b
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M kvm-all.c

  Log Message:
  -----------
  kvm: accept non-mapped memory in kvm_dirty_pages_log_change

It is okay if memory is not mapped into the guest but has dirty logging
enabled.  When this happens, KVM will not do anything and only accesses
from the host will be logged.

This can be triggered by iofuzz.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 6f6a5ef3e429f92f987678ea8c396aab4dc6aa19
      
https://github.com/qemu/qemu/commit/6f6a5ef3e429f92f987678ea8c396aab4dc6aa19
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M memory.c

  Log Message:
  -----------
  memory: include DIRTY_MEMORY_MIGRATION in the dirty log mask

The separate handling of DIRTY_MEMORY_MIGRATION, which does not
call log_start/log_stop callbacks when it changes in a region's
dirty logging mask, has caused several bugs.

One recent example is commit 4cc856f (kvm-all: Sync dirty-bitmap from
kvm before kvm destroy the corresponding dirty_bitmap, 2015-04-02).
Another performance problem is that KVM keeps tracking dirty pages
after a failed live migration, which causes bad performance due to
disallowing huge page mapping.

This patch removes the root cause of the problem by reporting
DIRTY_MEMORY_MIGRATION changes via log_start and log_stop.
Note that we now have to rebuild the FlatView when global dirty
logging is enabled or disabled; this ensures that log_start and
log_stop callbacks are invoked.

This will also be used to make the setting of bitmaps conditional.
In general, this patch lets users of the memory API ignore the
global state of dirty logging if they handle dirty logging
generically per region.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 1bfbac4ee16e2ea95d087e0926727d9a113b483e
      
https://github.com/qemu/qemu/commit/1bfbac4ee16e2ea95d087e0926727d9a113b483e
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M kvm-all.c

  Log Message:
  -----------
  kvm: remove special handling of DIRTY_MEMORY_MIGRATION in the dirty log mask

One recent example is commit 4cc856f (kvm-all: Sync dirty-bitmap from
kvm before kvm destroy the corresponding dirty_bitmap, 2015-04-02).
Another performance problem is that KVM keeps tracking dirty pages
after a failed live migration, which causes bad performance due to
disallowing huge page mapping.

Thanks to the previous patch, KVM can now stop hooking into
log_global_start/stop.  This simplifies the KVM code noticeably.

Reported-by: Wanpeng Li <address@hidden>
Reported-by: Xiao Guangrong <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 49dfcec40349245ad365964468b67e132c3cedc7
      
https://github.com/qemu/qemu/commit/49dfcec40349245ad365964468b67e132c3cedc7
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M exec.c
    M include/exec/ram_addr.h

  Log Message:
  -----------
  ram_addr: tweaks to xen_modified_memory

Invoke xen_modified_memory from cpu_physical_memory_set_dirty_range_nocode;
it is akin to DIRTY_MEMORY_MIGRATION, so set it together with that bitmap.
The remaining call from invalidate_and_set_dirty's "else" branch will go
away soon.

Second, fix the second argument to the function in the
cpu_physical_memory_set_dirty_lebitmap call site.  That function is only used
by KVM, but it is better to be clean anyway.

Acked-by: Stefano Stabellini <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 845b6214a309fa58a4405050bf8313e19fde5c91
      
https://github.com/qemu/qemu/commit/845b6214a309fa58a4405050bf8313e19fde5c91
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M exec.c

  Log Message:
  -----------
  exec: use memory_region_get_dirty_log_mask to optimize dirty tracking

The memory API can now return the exact set of bitmaps that have to
be tracked.  Use it instead of the in_migration variable.

In the next patches, we will also use it to set only DIRTY_MEMORY_VGA
or DIRTY_MEMORY_MIGRATION if necessary.  This can make a difference
for dataplane, especially after the dirty bitmap is changed to use
more expensive atomic operations.

Of some interest is the change to stl_phys_notdirty.  When migration
was introduced, stl_phys_notdirty was changed to effectively behave
as stl_phys during migration.  In fact, if one looks at the function as it
was in the beginning (commit 8df1cd0, physical memory access functions,
2005-01-28), at the time the dirty bitmap was the equivalent of
DIRTY_MEMORY_CODE nowadays; hence, the function simply should not touch
the dirty code bits.  This patch changes it to do the intended thing.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 1652b974766401743879d78f796f44b8929b0787
      
https://github.com/qemu/qemu/commit/1652b974766401743879d78f796f44b8929b0787
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M include/exec/exec-all.h
    M linux-user/mmap.c
    M translate-all.h
    M user-exec.c

  Log Message:
  -----------
  exec: move functions to translate-all.h

Remove them from the sundry exec-all.h header, since they are only used by
the TCG runtime in exec.c and user-exec.c.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 358653391b0c0beaa0e3f9e28304e1918cd223b3
      
https://github.com/qemu/qemu/commit/358653391b0c0beaa0e3f9e28304e1918cd223b3
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M exec.c
    M linux-user/mmap.c
    M translate-all.c
    M translate-all.h

  Log Message:
  -----------
  translate-all: remove unnecessary argument to tb_invalidate_phys_range

The is_cpu_write_access argument is always 0, remove it.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 9564f52da7eb061326956ed9a468935e3352512d
      
https://github.com/qemu/qemu/commit/9564f52da7eb061326956ed9a468935e3352512d
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M cputlb.c
    M include/exec/cputlb.h
    M translate-all.c

  Log Message:
  -----------
  cputlb: remove useless arguments to tlb_unprotect_code_phys, rename

These days modification of the TLB is done in notdirty_mem_write,
so the virtual address and env pointer as unnecessary.

The new name of the function, tlb_unprotect_code, is consistent with
tlb_protect_code.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: fc377bcf617a48233a99a9fe0a26247c38b5cb76
      
https://github.com/qemu/qemu/commit/fc377bcf617a48233a99a9fe0a26247c38b5cb76
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M translate-all.c

  Log Message:
  -----------
  translate-all: make less of tb_invalidate_phys_page_range depend on 
is_cpu_write_access

is_cpu_write_access is only set if tb_invalidate_phys_page_range is called
from tb_invalidate_phys_page_fast, and hence from notdirty_mem_write.
However:

- the code bitmap can be built directly in tb_invalidate_phys_page_fast
  (unconditionally, since is_cpu_write_access would always be passed as 1);

- the virtual address is not needed to mark the page as "not containing
  code" (dirty code bitmap = 1), so we can also remove that use of
  is_cpu_write_access.  For calls of tb_invalidate_phys_page_range
  that do not come from notdirty_mem_write, the next call to
  notdirty_mem_write will notice that the page does not contain code
  anymore, and will fix up the TLB entry.

The parameter needs to remain in order to guard accesses to cpu->mem_io_pc.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 58d2707e8713ef17b89b8b4c9ce586c76655a385
      
https://github.com/qemu/qemu/commit/58d2707e8713ef17b89b8b4c9ce586c76655a385
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M exec.c
    M include/exec/ram_addr.h
    M memory.c

  Log Message:
  -----------
  exec: pass client mask to cpu_physical_memory_set_dirty_range

This cuts in half the cost of bitmap operations (which will become more
expensive when made atomic) during migration on non-VRAM regions.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 72b47e79cef36ed6ffc718f10e21001d7ec2a66f
      
https://github.com/qemu/qemu/commit/72b47e79cef36ed6ffc718f10e21001d7ec2a66f
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M include/exec/ram_addr.h

  Log Message:
  -----------
  exec: invert return value of cpu_physical_memory_get_clean, rename

While it is obvious that cpu_physical_memory_get_dirty returns true even if
a single page is dirty, the same is not true for cpu_physical_memory_get_clean;
one would expect that it returns true only if all the pages are clean, but
it actually looks for even one clean page.  (By contrast, the caller of that
function, cpu_physical_memory_range_includes_clean, has a good name).

To clarify, rename the function to cpu_physical_memory_all_dirty and return
true if _all_ the pages are dirty.  This is the opposite of the previous
meaning, because "all are 1" is the same as "not (any is 0)", so we have to
modify cpu_physical_memory_range_includes_clean as well.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: e87f7778b64d4a6a78e16c288c7fdc6c15317d5f
      
https://github.com/qemu/qemu/commit/e87f7778b64d4a6a78e16c288c7fdc6c15317d5f
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M exec.c
    M include/exec/ram_addr.h

  Log Message:
  -----------
  exec: only check relevant bitmaps for cleanliness

Most of the time, not all bitmaps have to be marked as dirty;
do not do anything if the interesting ones are already dirty.
Previously, any clean bitmap would have cause all the bitmaps to be
marked dirty.

In fact, unless running TCG most of the time bitmap operations need
not be done at all, because memory_region_is_logging returns zero.
In this case, skip the call to cpu_physical_memory_range_includes_clean
altogether as well.

With this patch, cpu_physical_memory_set_dirty_range is called
unconditionally, so there need not be anymore a separate call to
xen_modified_memory.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 9460dee4b2258e3990906fb34099481c8334c267
      
https://github.com/qemu/qemu/commit/9460dee4b2258e3990906fb34099481c8334c267
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M include/exec/ram_addr.h

  Log Message:
  -----------
  memory: do not touch code dirty bitmap unless TCG is enabled

cpu_physical_memory_set_dirty_lebitmap unconditionally syncs the
DIRTY_MEMORY_CODE bitmap.  This however is unused unless TCG is
enabled.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 9f02cfc84b85929947b32fe1674fbc6a429f332a
      
https://github.com/qemu/qemu/commit/9f02cfc84b85929947b32fe1674fbc6a429f332a
  Author: Stefan Hajnoczi <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M include/qemu/bitmap.h
    M include/qemu/bitops.h
    M util/bitmap.c

  Log Message:
  -----------
  bitmap: add atomic set functions

Use atomic_or() for atomic bitmaps where several threads may set bits at
the same time.  This avoids the race condition between threads loading
an element, bitwise ORing, and then storing the element.

When setting all bits in a word we can avoid atomic ops and instead just
use an smp_mb() at the end.

Most bitmap users don't need atomicity so introduce new functions.

Signed-off-by: Stefan Hajnoczi <address@hidden>
Message-Id: <address@hidden>
[Avoid barrier in the single word case, use full barrier instead of write.
 - Paolo]
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 36546e5b803f6e363906607307f27c489441fd15
      
https://github.com/qemu/qemu/commit/36546e5b803f6e363906607307f27c489441fd15
  Author: Stefan Hajnoczi <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M include/qemu/bitmap.h
    M util/bitmap.c

  Log Message:
  -----------
  bitmap: add atomic test and clear

The new bitmap_test_and_clear_atomic() function clears a range and
returns whether or not the bits were set.

Signed-off-by: Stefan Hajnoczi <address@hidden>
Message-Id: <address@hidden>
[Test before xchg; then a full barrier is needed at the end just like
 in the previous patch.  The barrier can be avoided if we did at least
 one xchg.  - Paolo]
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: d114875b9a1c21162f69a12d72f69a22e7bab376
      
https://github.com/qemu/qemu/commit/d114875b9a1c21162f69a12d72f69a22e7bab376
  Author: Stefan Hajnoczi <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M include/exec/ram_addr.h

  Log Message:
  -----------
  memory: use atomic ops for setting dirty memory bits

Use set_bit_atomic() and bitmap_set_atomic() so that multiple threads
can dirty memory without race conditions.

Signed-off-by: Stefan Hajnoczi <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 20015f72bda7d2f356c43580a5542a659afedf83
      
https://github.com/qemu/qemu/commit/20015f72bda7d2f356c43580a5542a659afedf83
  Author: Stefan Hajnoczi <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M arch_init.c
    M include/exec/ram_addr.h

  Log Message:
  -----------
  migration: move dirty bitmap sync to ram_addr.h

The dirty memory bitmap is managed by ram_addr.h and copied to
migration_bitmap[] periodically during live migration.

Move the code to sync the bitmap to ram_addr.h where related code lives.

Signed-off-by: Stefan Hajnoczi <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 03eebc9e3246b9b3f5925aa41f7dfd7c1e467875
      
https://github.com/qemu/qemu/commit/03eebc9e3246b9b3f5925aa41f7dfd7c1e467875
  Author: Stefan Hajnoczi <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M cputlb.c
    M exec.c
    M include/exec/ram_addr.h
    M memory.c

  Log Message:
  -----------
  memory: replace cpu_physical_memory_reset_dirty() with test-and-clear

The cpu_physical_memory_reset_dirty() function is sometimes used
together with cpu_physical_memory_get_dirty().  This is not atomic since
two separate accesses to the dirty memory bitmap are made.

Turn cpu_physical_memory_reset_dirty() and
cpu_physical_memory_clear_dirty_range_type() into the atomic
cpu_physical_memory_test_and_clear_dirty().

Signed-off-by: Stefan Hajnoczi <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 5f2cb94688bd0b2c88e0fc1ac3c4582965b7b106
      
https://github.com/qemu/qemu/commit/5f2cb94688bd0b2c88e0fc1ac3c4582965b7b106
  Author: Stefan Hajnoczi <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M include/exec/ram_addr.h

  Log Message:
  -----------
  memory: make cpu_physical_memory_sync_dirty_bitmap() fully atomic

The fast path of cpu_physical_memory_sync_dirty_bitmap() directly
manipulates the dirty bitmap.  Use atomic_xchg() to make the
test-and-clear atomic.

Signed-off-by: Stefan Hajnoczi <address@hidden>
Message-Id: <address@hidden>
[Only do xchg on nonzero words. - Paolo]
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: ec05ec26f940564b1e07bf88857035ec27e21dd8
      
https://github.com/qemu/qemu/commit/ec05ec26f940564b1e07bf88857035ec27e21dd8
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M memory.c

  Log Message:
  -----------
  memory: use mr->ram_addr in "is this RAM?" assertions

mr->terminates alone doesn't guarantee that we are looking at a RAM region.
mr->ram_addr also has to be checked, in order to distinguish RAM and I/O
regions.

So, do the following:

1) add a new define RAM_ADDR_INVALID, and test it in the assertions
instead of mr->terminates

2) IOMMU regions were not setting mr->ram_addr to a bogus value, initialize
it in the instance_init function so that the new assertions would fire
for IOMMU regions as well.

Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 5045e9d912588a7421ab899ba510025722666fd1
      
https://github.com/qemu/qemu/commit/5045e9d912588a7421ab899ba510025722666fd1
  Author: Victor CLEMENT <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M cpus.c

  Log Message:
  -----------
  icount: implement a new icount_sleep mode toggleing real-time cpu sleep

When the icount_sleep mode is disabled, the QEMU_VIRTUAL_CLOCK runs at the
maximum possible speed by warping the sleep times of the virtual cpu to the
soonest clock deadline. The virtual clock will be updated only according
the instruction counter.

Signed-off-by: Victor CLEMENT <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: f1f4b57e88ff7c9cb20b074ff6106fd8f4397baa
      
https://github.com/qemu/qemu/commit/f1f4b57e88ff7c9cb20b074ff6106fd8f4397baa
  Author: Victor CLEMENT <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M cpus.c
    M qemu-options.hx
    M vl.c

  Log Message:
  -----------
  icount: add sleep parameter to the icount option to set icount_sleep mode

The 'sleep' parameter sets the icount_sleep mode, which is enabled by
default. To disable it, add the 'sleep=no' parameter (or 'nosleep') to the
qemu -icount option.

Signed-off-by: Victor CLEMENT <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: d7a0f71d9aac33e58d39fdbe4861d440af44fa8b
      
https://github.com/qemu/qemu/commit/d7a0f71d9aac33e58d39fdbe4861d440af44fa8b
  Author: Victor CLEMENT <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M cpus.c

  Log Message:
  -----------
  icount: print a warning if there is no more deadline in sleep=no mode

While qemu is running in sleep=no mode, a warning will be printed
when no timer deadline is set.
As this mode is intended for getting deterministic virtual time, if no
timer is set on the virtual clock this determinism is broken.

Signed-off-by: Victor CLEMENT <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: f794aa4a2fd772a3ec413c4e478cc23857cfee98
      
https://github.com/qemu/qemu/commit/f794aa4a2fd772a3ec413c4e478cc23857cfee98
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M include/exec/memattrs.h
    M target-i386/cpu.h
    M target-i386/helper.c
    M target-i386/kvm.c

  Log Message:
  -----------
  target-i386: introduce cpu_get_mem_attrs

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: b216aa6c0fcbaa8ff4128969c14594896a5485a4
      
https://github.com/qemu/qemu/commit/b216aa6c0fcbaa8ff4128969c14594896a5485a4
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M target-i386/cpu.h
    M target-i386/helper.c
    M target-i386/seg_helper.c
    M target-i386/smm_helper.c
    M target-i386/svm_helper.c

  Log Message:
  -----------
  target-i386: Use correct memory attributes for memory accesses

These include page table walks, SVM accesses and SMM state save accesses.

The bulk of the patch is obtained with

   sed -i 's/\(\<[a-z_]*_phys\(_notdirty\)\?\>(cs\)->as,/x86_\1,/'

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 3f7d84648607cc0fcb3812bb4b88978e2a7aa24f
      
https://github.com/qemu/qemu/commit/3f7d84648607cc0fcb3812bb4b88978e2a7aa24f
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M target-i386/Makefile.objs
    M target-i386/helper.h
    R target-i386/ioport-user.c
    M target-i386/misc_helper.c
    M target-i386/translate.c

  Log Message:
  -----------
  target-i386: Use correct memory attributes for ioport accesses

In order to do this, stop using the cpu_in*/out* helpers, and instead
access address_space_io directly.

cpu_in* and cpu_out* remain for usage in the monitor, in qtest, and
in Xen.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 9982f74bad70479939491b69522da047a3be5a0d
      
https://github.com/qemu/qemu/commit/9982f74bad70479939491b69522da047a3be5a0d
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M target-i386/cpu.h
    M target-i386/smm_helper.c

  Log Message:
  -----------
  target-i386: mask NMIs on entry to SMM

QEMU is not blocking NMIs on entry to SMM.  Implementing this has to
cover a few corner cases, because:

- NMIs can then be enabled by an IRET instruction and there
is no mechanism to _set_ the "NMIs masked" flag on exit from SMM:
"A special case can occur if an SMI handler nests inside an NMI handler
and then another NMI occurs. [...] When the processor enters SMM while
executing an NMI handler, the processor saves the SMRAM state save map
but does not save the attribute to keep NMI interrupts disabled.

- However, there is some hidden state, because "If NMIs were blocked
before the SMI occurred [and no IRET is executed while in SMM], they
are blocked after execution of RSM."  This is represented by the new
HF2_SMM_INSIDE_NMI_MASK bit.  If it is zero, NMIs are _unblocked_
on exit from RSM.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: b4854f1384176d897747de236f426d020668fa3c
      
https://github.com/qemu/qemu/commit/b4854f1384176d897747de236f426d020668fa3c
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M target-i386/smm_helper.c

  Log Message:
  -----------
  target-i386: set G=1 in SMM big real mode selectors

Because the limit field's bits 31:20 is 1, G should be 1.
VMX actually enforces this, let's do it for completeness
in QEMU as well.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: a9bad65d2c1f61af74ce2ff43238d4b20bf81c3a
      
https://github.com/qemu/qemu/commit/a9bad65d2c1f61af74ce2ff43238d4b20bf81c3a
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M target-i386/cpu.c

  Log Message:
  -----------
  target-i386: wake up processors that receive an SMI

An SMI should definitely wake up a processor in halted state!
This lets OVMF boot with SMM on multiprocessor systems, although
it halts very soon after that with a "CpuIndex != BspIndex"
assertion failure.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: e98094221ec336fcfd0c72c66f280f1cabb16c72
      
https://github.com/qemu/qemu/commit/e98094221ec336fcfd0c72c66f280f1cabb16c72
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/arm/vexpress.c
    M hw/arm/virt.c
    M hw/block/pflash_cfi01.c

  Log Message:
  -----------
  pflash_cfi01: change big-endian property to BIT type

Make this consistent with the secure property, added in the next patch.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 5aa113f0a2c245b0a77865e1dd2445bdd24c3ef8
      
https://github.com/qemu/qemu/commit/5aa113f0a2c245b0a77865e1dd2445bdd24c3ef8
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/block/pflash_cfi01.c

  Log Message:
  -----------
  pflash_cfi01: change to new-style MMIO accessors

This is a required step to implement read_with_attrs and write_with_attrs.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: f71e42a5c98722d6faa5be84a34fbad90d27dc04
      
https://github.com/qemu/qemu/commit/f71e42a5c98722d6faa5be84a34fbad90d27dc04
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/block/pflash_cfi01.c

  Log Message:
  -----------
  pflash_cfi01: add secure property

When this property is set, MMIO accesses are only allowed with the
MEMTXATTRS_SECURE attribute.  This is used for secure access to UEFI
variables stored in flash.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 3751d7c43f795b45ffdb9429cfb09c6beea55c68
      
https://github.com/qemu/qemu/commit/3751d7c43f795b45ffdb9429cfb09c6beea55c68
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M qdev-monitor.c
    M qemu-options.hx

  Log Message:
  -----------
  vl: allow full-blown QemuOpts syntax for -global

-global does not work for drivers that have a dot in their name, such as
cfi.pflash01.  This is just a parsing limitation, because such globals
can be declared easily inside a -readconfig file.

To allow this usage, support the full QemuOpts key/value syntax for -global
too, for example "-global driver=cfi.pflash01,property=secure,value=on".
The two formats do not conflict, because the key/value syntax does not have
a period before the first equal sign.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: fb9e7e334b54350e8e3b62bd7892b78f63a9d848
      
https://github.com/qemu/qemu/commit/fb9e7e334b54350e8e3b62bd7892b78f63a9d848
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M include/qom/object.h
    M qom/object.c

  Log Message:
  -----------
  qom: add object_property_add_const_link

Suggested-by: Eduardo Habkost <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 71cdd1cb914e24000273bbbfa5fb226cdb8ea265
      
https://github.com/qemu/qemu/commit/71cdd1cb914e24000273bbbfa5fb226cdb8ea265
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M vl.c

  Log Message:
  -----------
  vl: run "late" notifiers immediately

If a machine_init_done notifier is added late, as part of a hot-plugged
device, run it immediately.
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 2001d0cd6d55e5efa9956fa8ff8b89034d6a4329
      
https://github.com/qemu/qemu/commit/2001d0cd6d55e5efa9956fa8ff8b89034d6a4329
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M target-i386/cpu-qom.h
    M target-i386/cpu.c

  Log Message:
  -----------
  target-i386: create a separate AddressSpace for each CPU

Different CPUs can be in SMM or not at the same time, thus they
will see different things where the chipset places SMRAM.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: fe6567d5fddfb7501a352c5e080a9eecf7b89177
      
https://github.com/qemu/qemu/commit/fe6567d5fddfb7501a352c5e080a9eecf7b89177
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/pci-host/piix.c
    M hw/pci-host/q35.c
    M include/hw/pci-host/q35.h

  Log Message:
  -----------
  hw/i386: add a separate region that tracks the SMRAME bit

This region is exported at /machine/smram.  It is "empty" if
SMRAME=0 and points to SMRAM if SMRAME=1.  The CPU will
enable/disable it as it enters or exits SMRAM.

While touching nearby code, the existing memory region setup was
slightly inconsistent.  The smram_region is *disabled* in order to open
SMRAM (because the smram_region shows the low VRAM instead of the RAM
at 0xa0000).  Because SMRAM is closed at startup, the smram_region must
be enabled when creating the i440fx or q35 devices.

Acked-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: f809c605122df291bbb9004dc487bde0969134b5
      
https://github.com/qemu/qemu/commit/f809c605122df291bbb9004dc487bde0969134b5
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M bsd-user/main.c
    M hw/i386/pc.c
    M hw/pci-host/pam.c
    M hw/pci-host/piix.c
    M hw/pci-host/q35.c
    M include/hw/i386/pc.h
    M include/hw/pci-host/pam.h
    M include/hw/pci-host/q35.h
    M linux-user/main.c
    M target-i386/cpu-qom.h
    M target-i386/cpu.c
    M target-i386/cpu.h
    M target-i386/machine.c
    M target-i386/smm_helper.c

  Log Message:
  -----------
  target-i386: use memory API to implement SMRAM

Remove cpu_smm_register and cpu_smm_update.  Instead, each CPU
address space gets an extra region which is an alias of
/machine/smram.  This extra region is enabled or disabled
as the CPU enters/exits SMM.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 3de70c0899db2712a5ae321093aa6173d6f76706
      
https://github.com/qemu/qemu/commit/3de70c0899db2712a5ae321093aa6173d6f76706
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/pci-host/pam.c
    M hw/pci-host/piix.c
    M hw/pci-host/q35.c
    M include/hw/pci-host/pam.h

  Log Message:
  -----------
  hw/i386: remove smram_update

It's easier to inline it now that most of its work is done by the CPU
(rather than the chipset) through /machine/smram and the memory API.

Acked-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 64130fa4a1514ae7a580b8d46290a11784770600
      
https://github.com/qemu/qemu/commit/64130fa4a1514ae7a580b8d46290a11784770600
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/pci-host/q35.c
    M include/hw/pci-host/q35.h

  Log Message:
  -----------
  q35: implement high SMRAM

When H_SMRAME is 1, low memory at 0xa0000 is left alone by
SMM, and instead the chipset maps the 0xa0000-0xbffff window at
0xfeda0000-0xfedbffff.  This affects both the "non-SMM" view controlled
by D_OPEN and the SMM view controlled by G_SMRAME, so add two new
MemoryRegions and toggle the enabled/disabled state of all four
in mch_update_smram.

Acked-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 7744752402d11cebe4c1d4079dcd40d3145eb37b
      
https://github.com/qemu/qemu/commit/7744752402d11cebe4c1d4079dcd40d3145eb37b
  Author: Gerd Hoffmann <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/pci-host/q35.c
    M include/hw/pci-host/q35.h

  Log Message:
  -----------
  q35: fix ESMRAMC default

The cache bits in ESMRAMC are hardcoded to 1 (=disabled) according to
the q35 mch specs.  Add and use a define with this default.

While being at it also update the SMRAM default to use the name (no code
change, just makes things a bit more readable).

Signed-off-by: Gerd Hoffmann <address@hidden>
Acked-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: b66a67d7519cb7f980885af5391b1103c42e9b6d
      
https://github.com/qemu/qemu/commit/b66a67d7519cb7f980885af5391b1103c42e9b6d
  Author: Gerd Hoffmann <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/pci-host/q35.c
    M include/hw/pci-host/q35.h

  Log Message:
  -----------
  q35: add config space wmask for SMRAM and ESMRAMC

Not all bits in SMRAM and ESMRAMC can be changed by the guest.
Add wmask defines accordingly and set them in mch_reset().

Signed-off-by: Gerd Hoffmann <address@hidden>
Acked-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 68c77acfb18d28933f17b1c2a842bd936ce7223b
      
https://github.com/qemu/qemu/commit/68c77acfb18d28933f17b1c2a842bd936ce7223b
  Author: Gerd Hoffmann <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/pci-host/q35.c
    M include/hw/pci-host/q35.h

  Log Message:
  -----------
  q35: implement SMRAM.D_LCK

Once the SMRAM.D_LCK bit has been set by the guest several bits in SMRAM
and ESMRAMC become readonly until the next machine reset.  Implement
this by updating the wmask accordingly when the guest sets the lock bit.
As the lock it itself is locked down too we don't need to worry about
the guest clearing the lock bit.

Signed-off-by: Gerd Hoffmann <address@hidden>
Acked-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 66e2ec2417e72edea1df5fb340b210100b0571b7
      
https://github.com/qemu/qemu/commit/66e2ec2417e72edea1df5fb340b210100b0571b7
  Author: Gerd Hoffmann <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M tests/Makefile
    A tests/q35-test.c

  Log Message:
  -----------
  q35: add test for SMRAM.D_LCK

Signed-off-by: Gerd Hoffmann <address@hidden>
Acked-by: Michael S. Tsirkin <address@hidden>
[Fix compilation of the newly introduced test. - Paolo]
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: bafc90bdc594a4d04db846bd8712bdcec59678a8
      
https://github.com/qemu/qemu/commit/bafc90bdc594a4d04db846bd8712bdcec59678a8
  Author: Gerd Hoffmann <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/pci-host/q35.c
    M include/hw/pci-host/q35.h

  Log Message:
  -----------
  q35: implement TSEG

TSEG provides larger amounts of SMRAM than the 128 KB available with
legacy SMRAM and high SMRAM.

Route access to tseg into nowhere when enabled, for both cpus and
busmaster dma, and add tseg window to smram region, so cpus can access
it in smm mode.

Signed-off-by: Gerd Hoffmann <address@hidden>
Acked-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 11e66a15a084cb0820dba13f4ea3b15b0512fd39
      
https://github.com/qemu/qemu/commit/11e66a15a084cb0820dba13f4ea3b15b0512fd39
  Author: Gerd Hoffmann <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M hw/acpi/ich9.c
    M hw/isa/lpc_ich9.c
    M include/hw/acpi/ich9.h
    M include/hw/i386/ich9.h

  Log Message:
  -----------
  ich9: implement SMI_LOCK

Add write mask for the smi enable register, so we can disable write
access to certain bits.  Open all bits on reset.  Disable write access
to GBL_SMI_EN when SMI_LOCK (in ich9 lpc pci config space) is set.
Write access to SMI_LOCK itself is disabled too.

Signed-off-by: Gerd Hoffmann <address@hidden>
Acked-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 3bbf572345c65813f86a8fc434ea1b23beb08e16
      
https://github.com/qemu/qemu/commit/3bbf572345c65813f86a8fc434ea1b23beb08e16
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M include/qemu/atomic.h

  Log Message:
  -----------
  atomics: add explicit compiler fence in __atomic memory barriers

__atomic_thread_fence does not include a compiler barrier; in the
C++11 memory model, fences take effect in combination with other
atomic operations.  GCC implements this by making __atomic_load and
__atomic_store access memory as if the pointer was volatile, and
leaves no trace whatsoever of acquire and release fences in the
compiler's intermediate representation.

In QEMU, we want memory barriers to act on all memory, but at the same
time we would like to use __atomic_thread_fence for portability reasons.
Add compiler barriers manually around the __atomic_thread_fence.

Message-Id: <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 24a314269281a175b5540b3b6a8981ed2e8220e1
      
https://github.com/qemu/qemu/commit/24a314269281a175b5540b3b6a8981ed2e8220e1
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-06-05 (Fri, 05 Jun 2015)

  Changed paths:
    M include/standard-headers/linux/virtio_ring.h
    M linux-headers/asm-x86/kvm.h
    M linux-headers/linux/kvm.h

  Log Message:
  -----------
  update Linux headers from kvm/next

This is kvm.git commit 05ff30bb56c6b3d3000519d6e02ed35678ddae3b.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: ee09f84e6bf5383a23c9624115c26b72aa1e076c
      
https://github.com/qemu/qemu/commit/ee09f84e6bf5383a23c9624115c26b72aa1e076c
  Author: Peter Maydell <address@hidden>
  Date:   2015-06-08 (Mon, 08 Jun 2015)

  Changed paths:
    M Makefile.target
    M arch_init.c
    M bsd-user/main.c
    M cpus.c
    M cputlb.c
    M exec.c
    M hw/acpi/ich9.c
    M hw/arm/vexpress.c
    M hw/arm/virt.c
    M hw/block/pflash_cfi01.c
    M hw/char/parallel.c
    M hw/display/cg3.c
    M hw/display/exynos4210_fimd.c
    M hw/display/framebuffer.c
    M hw/display/g364fb.c
    M hw/display/sm501.c
    M hw/display/tcx.c
    M hw/display/vmware_vga.c
    M hw/i386/pc.c
    M hw/isa/isa-bus.c
    M hw/isa/lpc_ich9.c
    M hw/pci-host/pam.c
    M hw/pci-host/piix.c
    M hw/pci-host/q35.c
    M hw/virtio/dataplane/vring.c
    M hw/virtio/vhost.c
    M include/exec/cputlb.h
    M include/exec/exec-all.h
    M include/exec/memattrs.h
    M include/exec/memory.h
    M include/exec/ram_addr.h
    M include/hw/acpi/ich9.h
    M include/hw/i386/ich9.h
    M include/hw/i386/pc.h
    M include/hw/pci-host/pam.h
    M include/hw/pci-host/q35.h
    M include/qemu/atomic.h
    M include/qemu/bitmap.h
    M include/qemu/bitops.h
    M include/qom/object.h
    M include/standard-headers/linux/virtio_ring.h
    M include/ui/console.h
    M kvm-all.c
    M linux-headers/asm-x86/kvm.h
    M linux-headers/linux/kvm.h
    M linux-user/main.c
    M linux-user/mmap.c
    M memory.c
    M qdev-monitor.c
    M qemu-nbd.c
    M qemu-options.hx
    M qom/object.c
    M target-i386/Makefile.objs
    M target-i386/cpu-qom.h
    M target-i386/cpu.c
    M target-i386/cpu.h
    M target-i386/helper.c
    M target-i386/helper.h
    R target-i386/ioport-user.c
    M target-i386/kvm.c
    M target-i386/machine.c
    M target-i386/misc_helper.c
    M target-i386/seg_helper.c
    M target-i386/smm_helper.c
    M target-i386/svm_helper.c
    M target-i386/translate.c
    M tests/Makefile
    A tests/q35-test.c
    M translate-all.c
    M translate-all.h
    M ui/console.c
    M user-exec.c
    M util/bitmap.c
    M vl.c
    M xen-hvm.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging

* KVM error improvement from Laurent
* CONFIG_PARALLEL fix from Mirek
* Atomic/optimized dirty bitmap access from myself and Stefan
* BUILD_DIR convenience/bugfix from Peter C
* Memory leak fix from Shannon
* SMM improvements (though still TCG only) from myself and Gerd, acked by mst

# gpg: Signature made Fri Jun  5 18:45:20 2015 BST using RSA key ID 78C7AE83
# gpg: Good signature from "Paolo Bonzini <address@hidden>"
# gpg:                 aka "Paolo Bonzini <address@hidden>"
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg:          It is not certain that the signature belongs to the owner.
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
#      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83

* remotes/bonzini/tags/for-upstream: (62 commits)
  update Linux headers from kvm/next
  atomics: add explicit compiler fence in __atomic memory barriers
  ich9: implement SMI_LOCK
  q35: implement TSEG
  q35: add test for SMRAM.D_LCK
  q35: implement SMRAM.D_LCK
  q35: add config space wmask for SMRAM and ESMRAMC
  q35: fix ESMRAMC default
  q35: implement high SMRAM
  hw/i386: remove smram_update
  target-i386: use memory API to implement SMRAM
  hw/i386: add a separate region that tracks the SMRAME bit
  target-i386: create a separate AddressSpace for each CPU
  vl: run "late" notifiers immediately
  qom: add object_property_add_const_link
  vl: allow full-blown QemuOpts syntax for -global
  pflash_cfi01: add secure property
  pflash_cfi01: change to new-style MMIO accessors
  pflash_cfi01: change big-endian property to BIT type
  target-i386: wake up processors that receive an SMI
  ...

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/2e29dd7c44db...ee09f84e6bf5

reply via email to

[Prev in Thread] Current Thread [Next in Thread]