qemu-commits
[Top][All Lists]
Advanced

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

[Qemu-commits] [qemu/qemu] 58513b: block: Monitor command commit neglect


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] 58513b: block: Monitor command commit neglects to report s...
Date: Mon, 28 Jan 2013 18:30:13 -0800

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 58513bde833804bc9395d79fd81aae631b97c348
      
https://github.com/qemu/qemu/commit/58513bde833804bc9395d79fd81aae631b97c348
  Author: Jeff Cody <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M blockdev.c

  Log Message:
  -----------
  block: Monitor command commit neglects to report some errors

The non-live bdrv_commit() function may return one of the following
errors: -ENOTSUP, -EBUSY, -EACCES, -EIO.  The only error that is
checked in the HMP handler is -EBUSY, so the monitor command 'commit'
silently fails for all error cases other than 'Device is in use'.

Report error using monitor_printf() and strerror(), and convert existing
qerror_report() calls in do_commit() to monitor_printf().

Signed-off-by: Jeff Cody <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>
Signed-off-by: Luiz Capitulino <address@hidden>


  Commit: 01ceb97e7b8b00a1d4779543fe4b958df7e16890
      
https://github.com/qemu/qemu/commit/01ceb97e7b8b00a1d4779543fe4b958df7e16890
  Author: Luiz Capitulino <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M hmp.c
    M hw/virtio-balloon.c
    M qapi-schema.json
    M qmp-commands.hx

  Log Message:
  -----------
  balloon: drop old stats code & API

Next commit will re-enable balloon stats with a different interface, but
this old code conflicts with it. Let's drop it.

It's important to note that the QMP and HMP interfaces are also dropped
by this commit. That shouldn't be a problem though, because:

 1. All QMP fields are optional
 2. This feature has always been disabled

Signed-off-by: Luiz Capitulino <address@hidden>
Reviewed-by: Eric Blake <address@hidden>


  Commit: 7e6ccd9c159450e79f42d08112ebe263b0466644
      
https://github.com/qemu/qemu/commit/7e6ccd9c159450e79f42d08112ebe263b0466644
  Author: Luiz Capitulino <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M hw/virtio-balloon.c

  Log Message:
  -----------
  balloon: re-enable balloon stats

The statistics are now available through device properties via a
polling mechanism. First a client has to enable polling, then it
can query available stats.

Polling is enabled by setting an update interval (in seconds)
to a property named guest-stats-polling-interval, like this:

{ "execute": "qom-set",
  "arguments": { "path": "/machine/peripheral-anon/device[1]",
           "property": "guest-stats-polling-interval", "value": 4 } }

Then the available stats can be retrieved by querying the
guest-stats property. The returned object is a dict containing
all available stats. Example:

{ "execute": "qom-get",
  "arguments": { "path": "/machine/peripheral-anon/device[1]",
  "property": "guest-stats" } }

{
    "return": {
  "stats": {
      "stat-swap-out": 0,
      "stat-free-memory": 844943360,
      "stat-minor-faults": 219028,
      "stat-major-faults": 235,
      "stat-total-memory": 1044406272,
      "stat-swap-in": 0
  },
  "last-update": 1358529861
    }
}

Please, check the next commit for full documentation.

Signed-off-by: Luiz Capitulino <address@hidden>
Reviewed-by: Eric Blake <address@hidden>


  Commit: 045a70857ac07de791ddbf313323c4e4f91e056e
      
https://github.com/qemu/qemu/commit/045a70857ac07de791ddbf313323c4e4f91e056e
  Author: Luiz Capitulino <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    A docs/virtio-balloon-stats.txt

  Log Message:
  -----------
  docs: document virtio-balloon stats

Signed-off-by: Luiz Capitulino <address@hidden>
Reviewed-by: Eric Blake <address@hidden>


  Commit: 51767e7cf2c3abc07d30009ab3d6262bdfd89b8b
      
https://github.com/qemu/qemu/commit/51767e7cf2c3abc07d30009ab3d6262bdfd89b8b
  Author: Lei Li <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M qemu-char.c
    M qemu-options.hx

  Log Message:
  -----------
  qemu-char: Add new char backend CirMemCharDriver

Signed-off-by: Lei Li <address@hidden>
Signed-off-by: Luiz Capitulino <address@hidden>


  Commit: 1f590cf9455c571799d1bfc0777255fa0796d4da
      
https://github.com/qemu/qemu/commit/1f590cf9455c571799d1bfc0777255fa0796d4da
  Author: Lei Li <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M hmp-commands.hx
    M hmp.c
    M hmp.h
    M qapi-schema.json
    M qemu-char.c
    M qmp-commands.hx

  Log Message:
  -----------
  QAPI: Introduce memchar-write QMP command

Signed-off-by: Lei Li <address@hidden>
Signed-off-by: Luiz Capitulino <address@hidden>


  Commit: 49b6d7220bce42e6c06e0dbb61969a997868491f
      
https://github.com/qemu/qemu/commit/49b6d7220bce42e6c06e0dbb61969a997868491f
  Author: Lei Li <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M hmp-commands.hx
    M hmp.c
    M hmp.h
    M qapi-schema.json
    M qemu-char.c
    M qmp-commands.hx

  Log Message:
  -----------
  QAPI: Introduce memchar-read QMP command

Signed-off-by: Lei Li <address@hidden>
Signed-off-by: Luiz Capitulino <address@hidden>


  Commit: 4c37ef022381e777251d7084591978a4dc622efe
      
https://github.com/qemu/qemu/commit/4c37ef022381e777251d7084591978a4dc622efe
  Author: Paolo Bonzini <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M include/qemu/host-utils.h

  Log Message:
  -----------
  host-utils: add ffsl

We can provide fast versions based on the other functions defined
by host-utils.h.  Some care is required on glibc, which provides
ffsl already.

Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: e7c033c3fa22a1e42d9ba57fed6ddecfbce3a01c
      
https://github.com/qemu/qemu/commit/e7c033c3fa22a1e42d9ba57fed6ddecfbce3a01c
  Author: Paolo Bonzini <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    A include/qemu/hbitmap.h
    M tests/Makefile
    A tests/test-hbitmap.c
    M trace-events
    M util/Makefile.objs
    A util/hbitmap.c

  Log Message:
  -----------
  add hierarchical bitmap data type and test cases

HBitmaps provides an array of bits.  The bits are stored as usual in an
array of unsigned longs, but HBitmap is also optimized to provide fast
iteration over set bits; going from one bit to the next is O(logB n)
worst case, with B = sizeof(long) * CHAR_BIT: the result is low enough
that the number of levels is in fact fixed.

In order to do this, it stacks multiple bitmaps with progressively coarser
granularity; in all levels except the last, bit N is set iff the N-th
unsigned long is nonzero in the immediately next level.  When iteration
completes on the last level it can examine the 2nd-last level to quickly
skip entire words, and even do so recursively to skip blocks of 64 words or
powers thereof (32 on 32-bit machines).

Given an index in the bitmap, it can be split in group of bits like
this (for the 64-bit case):

     bits 0-57 => word in the last bitmap     | bits 58-63 => bit in the word
     bits 0-51 => word in the 2nd-last bitmap | bits 52-57 => bit in the word
     bits 0-45 => word in the 3rd-last bitmap | bits 46-51 => bit in the word

So it is easy to move up simply by shifting the index right by
log2(BITS_PER_LONG) bits.  To move down, you shift the index left
similarly, and add the word index within the group.  Iteration uses
ffs (find first set bit) to find the next word to examine; this
operation can be done in constant time in most current architectures.

Setting or clearing a range of m bits on all levels, the work to perform
is O(m + m/W + m/W^2 + ...), which is O(m) like on a regular bitmap.

When iterating on a bitmap, each bit (on any level) is only visited
once.  Hence, The total cost of visiting a bitmap with m bits in it is
the number of bits that are set in all bitmaps.  Unless the bitmap is
extremely sparse, this is also O(m + m/W + m/W^2 + ...), so the amortized
cost of advancing from one bit to the next is usually constant.

Reviewed-by: Laszlo Ersek <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 8f0720ecbc3677e13fc7531588fc3831cc972ee4
      
https://github.com/qemu/qemu/commit/8f0720ecbc3677e13fc7531588fc3831cc972ee4
  Author: Paolo Bonzini <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block.c
    M block/mirror.c
    M include/block/block.h
    M include/block/block_int.h
    M trace-events

  Log Message:
  -----------
  block: implement dirty bitmap using HBitmap

This actually uses the dirty bitmap in the block layer, and converts
mirroring to use an HBitmapIter.

Reviewed-by: Laszlo Ersek <address@hidden> (except block/mirror.c parts)
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 343bded4ecfc467012e2ab675da75749f1d90f70
      
https://github.com/qemu/qemu/commit/343bded4ecfc467012e2ab675da75749f1d90f70
  Author: Paolo Bonzini <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block.c
    M include/block/block.h

  Log Message:
  -----------
  block: make round_to_clusters public

This is needed in the following patch.

Reviewed-by: Laszlo Ersek <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: b812f6719c21921a819709098dc018ed151c999b
      
https://github.com/qemu/qemu/commit/b812f6719c21921a819709098dc018ed151c999b
  Author: Paolo Bonzini <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block/mirror.c
    M blockdev.c
    M tests/qemu-iotests/041
    M tests/qemu-iotests/041.out
    M trace-events

  Log Message:
  -----------
  mirror: perform COW if the cluster size is bigger than the granularity

When mirroring runs, the backing files for the target may not yet be
ready.  However, this means that a copy-on-write operation on the target
would fill the missing sectors with zeros.  Copy-on-write only happens
if the granularity of the dirty bitmap is smaller than the cluster size
(and only for clusters that are allocated in the source after the job
has started copying).  So far, the granularity was fixed to 1MB; to avoid
the problem we detected the situation and required the backing files to
be available in that case only.

However, we want to lower the granularity for efficiency, so we need
a better solution.  The solution is to always copy a whole cluster the
first time it is touched.  The code keeps a bitmap of clusters that
have already been allocated by the mirroring job, and only does "manual"
copy-on-write if the chunk being copied is zero in the bitmap.

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


  Commit: acc906c6c5d5745fe7a3a2ed1bb5f0b1d6d1f21b
      
https://github.com/qemu/qemu/commit/acc906c6c5d5745fe7a3a2ed1bb5f0b1d6d1f21b
  Author: Paolo Bonzini <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block-migration.c
    M block.c
    M block/mirror.c

  Log Message:
  -----------
  block: return count of dirty sectors, not chunks

Reviewed-by: Laszlo Ersek <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 50717e941b9f306a45292621999eeafbaa954418
      
https://github.com/qemu/qemu/commit/50717e941b9f306a45292621999eeafbaa954418
  Author: Paolo Bonzini <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block-migration.c
    M block.c
    M block/mirror.c
    M include/block/block.h
    M qapi-schema.json

  Log Message:
  -----------
  block: allow customizing the granularity of the dirty bitmap

Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: eee13dfe302833944d1176677d12a6ea421a94ea
      
https://github.com/qemu/qemu/commit/eee13dfe302833944d1176677d12a6ea421a94ea
  Author: Paolo Bonzini <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block/mirror.c
    M blockdev.c
    M hmp.c
    M include/block/block_int.h
    M qapi-schema.json
    M qmp-commands.hx

  Log Message:
  -----------
  mirror: allow customizing the granularity

The desired granularity may be very different depending on the kind of
operation (e.g. continuous replication vs. collapse-to-raw) and whether
the VM is expected to perform lots of I/O while mirroring is in progress.

Allow the user to customize it, while providing a sane default so that
in general there will be no extra allocated space in the target compared
to the source.

Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: bd48bde8f0fa08dfc8edcafc2bc8aa6d43734463
      
https://github.com/qemu/qemu/commit/bd48bde8f0fa08dfc8edcafc2bc8aa6d43734463
  Author: Paolo Bonzini <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block/mirror.c
    M trace-events

  Log Message:
  -----------
  mirror: switch mirror_iteration to AIO

There is really no change in the behavior of the job here, since
there is still a maximum of one in-flight I/O operation between
the source and the target.  However, this patch already introduces
the AIO callbacks (which are unmodified in the next patch)
and some of the logic to count in-flight operations and only
complete the job when there is none.

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


  Commit: 08e4ed6cdeeee7912072cf14aa8ab6c60dacb4fb
      
https://github.com/qemu/qemu/commit/08e4ed6cdeeee7912072cf14aa8ab6c60dacb4fb
  Author: Paolo Bonzini <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block/mirror.c
    M blockdev.c
    M hmp.c
    M include/block/block_int.h
    M qapi-schema.json
    M qmp-commands.hx
    M tests/qemu-iotests/041
    M tests/qemu-iotests/041.out

  Log Message:
  -----------
  mirror: add buf-size argument to drive-mirror

This makes sense when the next commit starts using the extra buffer space
to perform many I/O operations asynchronously.

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


  Commit: 402a47411bff5e849dc880dd08ba7e6564e6e4f4
      
https://github.com/qemu/qemu/commit/402a47411bff5e849dc880dd08ba7e6564e6e4f4
  Author: Paolo Bonzini <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block/mirror.c
    M trace-events

  Log Message:
  -----------
  mirror: support more than one in-flight AIO operation

With AIO support in place, we can start copying more than one chunk
in parallel.  This patch introduces the required infrastructure for
this: the buffer is split into multiple granularity-sized chunks,
and there is a free list to access them.

Because of copy-on-write, a single operation may already require
multiple chunks to be available on the free list.

In addition, two different iterations on the HBitmap may want to
copy the same cluster.  We avoid this by keeping a bitmap of in-flight
I/O operations, and blocking until the previous iteration completes.
This should be a pretty rare occurrence, though; as long as there is
no overlap the next iteration can start before the previous one finishes.

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


  Commit: 884fea4e87fbc6daf4e6df618bb3cadc188dcc6b
      
https://github.com/qemu/qemu/commit/884fea4e87fbc6daf4e6df618bb3cadc188dcc6b
  Author: Paolo Bonzini <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block/mirror.c
    M trace-events

  Log Message:
  -----------
  mirror: support arbitrarily-sized iterations

Yet another optimization is to extend the mirroring iteration to include more
adjacent dirty blocks.  This limits the number of I/O operations and makes
mirroring efficient even with a small granularity.  Most of the infrastructure
is already in place; we only need to put a loop around the computation of
the origin and sector count of the iteration.

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


  Commit: 02582abd48aa3d860015e9a8fcd0d7ec1c34ec62
      
https://github.com/qemu/qemu/commit/02582abd48aa3d860015e9a8fcd0d7ec1c34ec62
  Author: Stefan Weil <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M blockdev.c
    M include/qemu-common.h

  Log Message:
  -----------
  block: Add special error code for wrong format

The block drivers need a special error code for "wrong format".
>From the available error codes EMEDIUMTYPE fits best.
It is not available on all platforms, so a definition in
qemu-common.h and a specific error report are needed.

Signed-off-by: Stefan Weil <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 15bac0d54f78adb5e255155a69e56ab7f6d8c8ea
      
https://github.com/qemu/qemu/commit/15bac0d54f78adb5e255155a69e56ab7f6d8c8ea
  Author: Stefan Weil <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block/bochs.c
    M block/cow.c
    M block/qcow.c
    M block/qcow2.c
    M block/qed.c
    M block/vmdk.c

  Log Message:
  -----------
  block: Use error code EMEDIUMTYPE for wrong format in some block drivers

This improves error reports for bochs, cow, qcow, qcow2, qed and vmdk
when a file with the wrong format is selected.

Signed-off-by: Stefan Weil <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 9f0470bb2d7942c28977296ff2598cdf30886e07
      
https://github.com/qemu/qemu/commit/9f0470bb2d7942c28977296ff2598cdf30886e07
  Author: Stefan Weil <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block/vdi.c

  Log Message:
  -----------
  block/vdi: Improve debug output for signature

The signature is a 32 bit value and needs up to 8 hex digits for printing.

Signed-off-by: Stefan Weil <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 8937f8222c14ab42140a5645c34e17cc620c05bb
      
https://github.com/qemu/qemu/commit/8937f8222c14ab42140a5645c34e17cc620c05bb
  Author: Stefan Weil <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block/vdi.c

  Log Message:
  -----------
  block/vdi: Improved return values from vdi_open

vdi_open returned -1 in case of any error, but it should return an
error code (negative value of errno or -EMEDIUMTYPE).

Signed-off-by: Stefan Weil <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 0e87ba2ccbf900cc5a56b95e0671e5a5d2c2f6a0
      
https://github.com/qemu/qemu/commit/0e87ba2ccbf900cc5a56b95e0671e5a5d2c2f6a0
  Author: Stefan Weil <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block/vdi.c

  Log Message:
  -----------
  block/vdi: Check for bad signature

vdi_open did not check for a bad signature.
This check was only in vdi_probe.

Signed-off-by: Stefan Weil <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 88ff0e48eedd679a9dc1122676d8aa29f8d07571
      
https://github.com/qemu/qemu/commit/88ff0e48eedd679a9dc1122676d8aa29f8d07571
  Author: Paolo Bonzini <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M block/mirror.c

  Log Message:
  -----------
  mirror: do nothing on zero-sized disk

On a zero-sized disk we need to break out of the job successfully
before bdrv_dirty_iter_init is called, otherwise you will get an
assertion failure with the next patch.

Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Laszlo Ersek <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 1b0952445522af73b0e78420a9078b3653923703
      
https://github.com/qemu/qemu/commit/1b0952445522af73b0e78420a9078b3653923703
  Author: Paolo Bonzini <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M include/qemu/hbitmap.h
    M tests/test-hbitmap.c
    M util/hbitmap.c

  Log Message:
  -----------
  hbitmap: add assertion on hbitmap_iter_init

hbitmap_iter_init causes an out-of-bounds access when the "first"
argument is or greater than or equal to the size of the bitmap.
Forbid this with an assertion, and remove the failing testcase.

Reported-by: Kevin Wolf <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Laszlo Ersek <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 1147bb15a715a907a91195c2ed601fc926e43d46
      
https://github.com/qemu/qemu/commit/1147bb15a715a907a91195c2ed601fc926e43d46
  Author: Jason Baron <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M hw/ide/ahci.c
    M hw/ide/ahci.h

  Log Message:
  -----------
  ahci: Remove unused AHCIDevice fields

'dma_status' and 'dma_cb' are written to, but never read.
Remove these fields in preparation for AHCI migration bits.

Signed-off-by: Jason Baron <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 4ac557c89b04d506c876a0a378e815d822261c8a
      
https://github.com/qemu/qemu/commit/4ac557c89b04d506c876a0a378e815d822261c8a
  Author: Kevin Wolf <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M hw/ide/ahci.c
    M hw/ide/ahci.h

  Log Message:
  -----------
  ahci: Change data types in preparation for migration

The size of an int depends on the host, so in order to be able to
migrate these fields, make them either int32_t or bool, depending on the
use.

Signed-off-by: Kevin Wolf <address@hidden>


  Commit: a26230218d7d66ec5cb1aec101ceaf0e7400ef7f
      
https://github.com/qemu/qemu/commit/a26230218d7d66ec5cb1aec101ceaf0e7400ef7f
  Author: Jason Baron <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M hw/ide/ahci.c
    M hw/ide/ahci.h
    M hw/ide/ich.c

  Log Message:
  -----------
  ahci: Add migration support

Jason tested these patches by migrating Windows 7 and Fedora 17 guests
(while under I/O) on both piix with ahci attached and on q35 (which has
a built-in AHCI controller).

Signed-off-by: Andreas Färber <address@hidden>
Signed-off-by: Jason Baron <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 8689907266b649b757c2203d9652cbe928a3ae0b
      
https://github.com/qemu/qemu/commit/8689907266b649b757c2203d9652cbe928a3ae0b
  Author: Vishvananda Ishaya <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M blockdev.c

  Log Message:
  -----------
  block: Create proper size file for disk mirror

The qmp monitor command to mirror a disk was passing -1 for size
along with the disk's backing file. This size of the resulting disk
is the size of the backing file, which is incorrect if the disk
has been resized. Therefore we should always pass in the size of
the current disk.

Signed-off-by: Vishvananda Ishaya <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 67bec53d9f2ccd3aa7d37a7e0689122587929220
      
https://github.com/qemu/qemu/commit/67bec53d9f2ccd3aa7d37a7e0689122587929220
  Author: Kevin Wolf <address@hidden>
  Date:   2013-01-25 (Fri, 25 Jan 2013)

  Changed paths:
    M hw/ide/core.c

  Log Message:
  -----------
  ide: Add fall through annotations

Add comments to help static analysers detect that these cases are
intentional, and clean up some whitespace in the environment of these
comments.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>


  Commit: 8486af93771302fa3154857a7c05612f0f61cc90
      
https://github.com/qemu/qemu/commit/8486af93771302fa3154857a7c05612f0f61cc90
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-openrisc/cpu.c

  Log Message:
  -----------
  target-openrisc: Drop OpenRISCCPUList

It was missed in 92a3136174f60ee45b113296cb2c2a5225b00369 (cpu:
Introduce CPUListState struct) because its naming did not match the
*CPUListState pattern. Use the generalized CPUListState instead.

Signed-off-by: Andreas Färber <address@hidden>


  Commit: dd51dc5262b718c5f045c86ce1175842ab42d2cd
      
https://github.com/qemu/qemu/commit/dd51dc5262b718c5f045c86ce1175842ab42d2cd
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-openrisc/exception_helper.c
    M target-openrisc/fpu_helper.c
    M target-openrisc/int_helper.c
    M target-openrisc/interrupt_helper.c
    M target-openrisc/mmu.c
    M target-openrisc/sys_helper.c

  Log Message:
  -----------
  target-openrisc: Clean up triple QOM casts

Instead of calling openrisc_env_get_cpu(), casting to CPU() via the
ENV_GET_CPU() compatibility macro and casting back to OPENRISC_CPU(),
just call openrisc_env_get_cpu() directly.

ENV_GET_CPU() is meant as workaround for target-independent code only.

Signed-off-by: Andreas Färber <address@hidden>


  Commit: d61a23ba77deefd88fd2457c2dba7d5bf13f5f5b
      
https://github.com/qemu/qemu/commit/d61a23ba77deefd88fd2457c2dba7d5bf13f5f5b
  Author: Eduardo Habkost <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M include/sysemu/kvm.h

  Log Message:
  -----------
  kvm: Add fake KVM_FEATURE_CLOCKSOURCE_STABLE_BIT for builds without KVM

Signed-off-by: Eduardo Habkost <address@hidden>
Acked-by: Marcelo Tosatti <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: aa87d45855c7b255b451622a84a3e5b9b4393425
      
https://github.com/qemu/qemu/commit/aa87d45855c7b255b451622a84a3e5b9b4393425
  Author: Eduardo Habkost <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-i386/cpu.c

  Log Message:
  -----------
  target-i386: Don't set any KVM flag by default if KVM is disabled

This is a cleanup that tries to solve two small issues:

 - We don't need a separate kvm_pv_eoi_features variable just to keep a
   constant calculated at compile-time, and this style would require
   adding a separate variable (that's declared twice because of the
   CONFIG_KVM ifdef) for each feature that's going to be
   enabled/disabled by machine-type compat code.
 - The pc-1.3 code is setting the kvm_pv_eoi flag on cpuid_kvm_features
   even when KVM is disabled at runtime. This small inconsistency in
   the cpuid_kvm_features field isn't a problem today because
   cpuid_kvm_features is ignored by the TCG code, but it may cause
   unexpected problems later when refactoring the CPUID handling code.

This patch eliminates the kvm_pv_eoi_features variable and simply uses
kvm_enabled() inside the enable_kvm_pv_eoi() compat function, so it
enables kvm_pv_eoi only if KVM is enabled. I believe this makes the
behavior of enable_kvm_pv_eoi() clearer and easier to understand.

Signed-off-by: Eduardo Habkost <address@hidden>
Acked-by: Gleb Natapov <address@hidden>
Reviewed-by: Marcelo Tosatti <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 2969475869a6f33b8883c2fbf90252dcf617902e
      
https://github.com/qemu/qemu/commit/2969475869a6f33b8883c2fbf90252dcf617902e
  Author: Eduardo Habkost <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

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

  Log Message:
  -----------
  pc: Reverse pc_init_pci() compatibility logic

Currently, the pc-1.4 machine init function enables PV EOI and then
calls the pc-1.2 machine init function. The problem with this approach
is that now we can't enable any additional compatibility code inside the
pc-1.2 init function because it would end up enabling the compatibility
behavior on pc-1.3 and pc-1.4 as well.

This reverses the logic so that the pc-1.2 machine init function will
disable PV EOI, and then call the pc-1.4 machine init function.

This way we can change older machine-types to enable compatibility
behavior, and the newer machine-types (pc-1.3, pc-q35-1.4 and
pc-i440fx-1.4) would just use the default behavior.

(This means that one nice side-effect of this change is that pc-q35-1.4
will get PV EOI enabled by default, too)

It would be interesting to eventually change pc_init_pci_no_kvmclock()
and pc_init_isa() to reuse pc_init_pci_1_2() as well (so we don't need
to duplicate compatibility code on those two functions). But this will
be probably much easier to do after we create a PCInitArgs struct for
the PC initialization arguments, and/or after we use global-properties
to implement the compatibility modes present in pc_init_pci_1_2().

Signed-off-by: Eduardo Habkost <address@hidden>
Acked-by: Michael S. Tsirkin <address@hidden>
Reviewed-by: Marcelo Tosatti <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: b164e48ed1600055bc190aa3ab42c18004d2c711
      
https://github.com/qemu/qemu/commit/b164e48ed1600055bc190aa3ab42c18004d2c711
  Author: Eduardo Habkost <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M include/sysemu/kvm.h
    M kvm-all.c
    M target-i386/kvm.c
    M target-ppc/kvm.c
    M target-s390x/kvm.c

  Log Message:
  -----------
  kvm: Create kvm_arch_vcpu_id() function

This will allow each architecture to define how the VCPU ID is set on
the KVM_CREATE_VCPU ioctl call.

Signed-off-by: Eduardo Habkost <address@hidden>
Acked-by: Gleb Natapov <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 83b17af5e619abdf11721826b08fa4f30e9dc4ee
      
https://github.com/qemu/qemu/commit/83b17af5e619abdf11721826b08fa4f30e9dc4ee
  Author: Eduardo Habkost <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-i386/kvm.c

  Log Message:
  -----------
  target-i386: kvm: Set vcpu_id to APIC ID instead of CPU index

The CPU ID in KVM is supposed to be the APIC ID, so change the
KVM_CREATE_VCPU call to match it. The current behavior didn't break
anything yet because today the APIC ID is assumed to be equal to the CPU
index, but this won't be true in the future.

Signed-off-by: Eduardo Habkost <address@hidden>
Reviewed-by: Marcelo Tosatti <address@hidden>
Acked-by: Gleb Natapov <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: cb41bad3c2c7d82405cbe057c944ed4fd176d82a
      
https://github.com/qemu/qemu/commit/cb41bad3c2c7d82405cbe057c944ed4fd176d82a
  Author: Eduardo Habkost <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

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

  Log Message:
  -----------
  target-i386: Introduce x86_cpu_apic_id_from_index() function

This function will be used by both the CPU initialization code and the
fw_cfg table initialization code.

Later this function will be updated to generate APIC IDs according to
the CPU topology.

Signed-off-by: Eduardo Habkost <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 70db922278f7b42375ead340b793ff3938835242
      
https://github.com/qemu/qemu/commit/70db922278f7b42375ead340b793ff3938835242
  Author: Eduardo Habkost <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M hw/fw_cfg.c
    M hw/pc.c
    M hw/ppc/mac_newworld.c
    M hw/ppc/mac_oldworld.c
    M hw/sun4m.c
    M hw/sun4u.c

  Log Message:
  -----------
  fw_cfg: Remove FW_CFG_MAX_CPUS from fw_cfg_init()

PC will not use max_cpus for that field, so move it outside the common
code so it can use a different value on PC.

Signed-off-by: Eduardo Habkost <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 54fb7bf68516642c609738814f160ee2069301e8
      
https://github.com/qemu/qemu/commit/54fb7bf68516642c609738814f160ee2069301e8
  Author: Eduardo Habkost <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M include/sysemu/cpus.h

  Log Message:
  -----------
  cpus.h: Make constant smp_cores/smp_threads available on *-user

The code that calculates the APIC ID will use smp_cores/smp_threads, so
just define them as 1 on *-user to avoid #ifdefs in the code.

Signed-off-by: Eduardo Habkost <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 1d934e89793d2828e04af93abd181e5ed5349ef4
      
https://github.com/qemu/qemu/commit/1d934e89793d2828e04af93abd181e5ed5349ef4
  Author: Eduardo Habkost <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M hw/pc.c

  Log Message:
  -----------
  pc: Set fw_cfg data based on APIC ID calculation

This changes FW_CFG_MAX_CPUS and FW_CFG_NUMA to use apic_id_for_cpu(),
so the NUMA table can be based on the APIC IDs, instead of CPU index
(SeaBIOS knows nothing about CPU indexes, just APIC IDs).

Signed-off-by: Eduardo Habkost <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 247c9de13f9d54a94734875000a9faea8168c8ca
      
https://github.com/qemu/qemu/commit/247c9de13f9d54a94734875000a9faea8168c8ca
  Author: Eduardo Habkost <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    A target-i386/topology.h
    M tests/.gitignore
    M tests/Makefile
    A tests/test-x86-cpuid.c

  Log Message:
  -----------
  target-i386: Topology & APIC ID utility functions

This introduces utility functions for the APIC ID calculation, based on:
  Intel® 64 Architecture Processor Topology Enumeration
  
http://software.intel.com/en-us/articles/intel-64-architecture-processor-topology-enumeration/

The code should be compatible with AMD's "Extended Method" described at:
  AMD CPUID Specification (Publication #25481)
  Section 3: Multiple Core Calcuation
as long as:
 - nr_threads is set to 1;
 - OFFSET_IDX is assumed to be 0;
 - CPUID Fn8000_0008_ECX[ApicIdCoreIdSize[3:0]] is set to
   apicid_core_width().

Unit tests included.

Signed-off-by: Eduardo Habkost <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 8932cfdf7b95734c9b4a114b8ed0b4527af77ce7
      
https://github.com/qemu/qemu/commit/8932cfdf7b95734c9b4a114b8ed0b4527af77ce7
  Author: Eduardo Habkost <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

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

  Log Message:
  -----------
  pc: Generate APIC IDs according to CPU topology

This keeps compatibility on machine-types pc-1.2 and older, and prints a
warning in case the requested configuration won't get the correct
topology.

I couldn't think of a better way to warn about broken topology when in
compat mode other than using error_report(). The warning message will
probably be buried in a log file somewhere, but it's better than
nothing.

Signed-off-by: Eduardo Habkost <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 4bfe910d4728807e7d80de152a7ef33dd608033f
      
https://github.com/qemu/qemu/commit/4bfe910d4728807e7d80de152a7ef33dd608033f
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-i386/cpu.c

  Log Message:
  -----------
  target-i386: Simplify cpu_x86_find_by_name()

Catch NULL name argument early to avoid repeated checks.
Similarly, check for -cpu host early and untangle from iterating through
model definitions. This prepares for introducing X86CPU subclasses.

Signed-off-by: Andreas Färber <address@hidden>


  Commit: 7fc9b714eb4877ca83ce8e437ec93d34fca0eb3b
      
https://github.com/qemu/qemu/commit/7fc9b714eb4877ca83ce8e437ec93d34fca0eb3b
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-i386/cpu.c

  Log Message:
  -----------
  target-i386: Drop redundant list of CPU definitions

It is no longer needed since dropping cpudef config file support.
Cleaning this up removes knowledge about other models from x86_def_t,
in preparation for reusing x86_def_t as intermediate step towards pure
QOM X86CPU subclasses.

Signed-off-by: Andreas Färber <address@hidden>


  Commit: 8ba8a69848f8b910207a4b57c68db9a7e92af578
      
https://github.com/qemu/qemu/commit/8ba8a69848f8b910207a4b57c68db9a7e92af578
  Author: Igor Mammedov <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-i386/cpu.c

  Log Message:
  -----------
  target-i386: Print deprecation warning if xlevel < 0x80000000

Signed-off-by: Igor Mammedov <address@hidden>
Reviewed-by: Eduardo Habkost <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 99b88a1708919934f4092f7b6dcc2cca9d4072e9
      
https://github.com/qemu/qemu/commit/99b88a1708919934f4092f7b6dcc2cca9d4072e9
  Author: Igor Mammedov <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

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

  Log Message:
  -----------
  target-i386: Replace uint32_t vendor fields by vendor string in x86_def_t

Vendor property setter takes string as vendor value but cpudefs
use uint32_t vendor[123] fields to define vendor value. It makes it
difficult to unify and use property setter for values from cpudefs.

Simplify code by using vendor property setter, vendor[123] fields
are converted into vendor[13] array to keep its value. And vendor
property setter is used to access/set value on CPU.

 - Make for() cycle reusable for the next patch by adding
   x86_cpu_vendor_words2str()

Intel's CPUID spec[1] says:
"
5.1.1 ...
These registers contain the ASCII string: GenuineIntel
...
"

List[2] of known vendor values shows that they all are 12 ASCII
characters long, padded where necessary with space.

Current supported values are all ASCII characters packed in
ebx, edx, ecx. So lets state that QEMU supports 12 printable ASCII
characters packed in ebx, edx, ecx registers for cpuid(0) instruction.

*1 - http://www.intel.com/Assets/PDF/appnote/241618.pdf
*2 - http://en.wikipedia.org/wiki/CPUID#EAX.3D0:_Get_vendor_ID

Signed-off-by: Igor Mammedov <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 11acfdd5a1647895ff9094e7f93f3317224eb4d8
      
https://github.com/qemu/qemu/commit/11acfdd5a1647895ff9094e7f93f3317224eb4d8
  Author: Igor Mammedov <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

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

  Log Message:
  -----------
  target-i386: Remove vendor_override field from CPUX86State

Commit 8935499831312 makes cpuid return to guest host's vendor value
instead of built-in one by default if kvm_enabled() == true and allows
to override this behavior if 'vendor' is specified on -cpu command line.

But every time guest calls cpuid to get 'vendor' value, host's value is
read again and again in default case.

It complicates semantics of vendor property and makes it harder to use.

Instead of reading 'vendor' value from host every time cpuid[vendor] is
called, override 'vendor' value only once in cpu_x86_find_by_name(), when
built-in CPU model is found and if(kvm_enabled() == true).

It provides the same default semantics
 if (kvm_enabled() == true)  vendor = host's vendor
 else vendor = built-in vendor

and then later:
 if (custom vendor) vendor = custom vendor

'vendor' value is overridden when user provides it on -cpu command line,
and there is no need for vendor_override field anymore, remove it.

Signed-off-by: Igor Mammedov <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: a91987c25db38834091174681a6e1ffcbe582182
      
https://github.com/qemu/qemu/commit/a91987c25db38834091174681a6e1ffcbe582182
  Author: Igor Mammedov <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-i386/cpu.c

  Log Message:
  -----------
  target-i386: Set custom features/properties without intermediate x86_def_t

Move custom features parsing after built-in cpu_model defaults are set
and set custom features directly on CPU instance. That allows to make a
clear distinction between built-in cpu model defaults that eventually
should go into class_init() and extra property setting which is done
after defaults are set on CPU instance.

Impl. details:
 * use object_property_parse() property setter so it would be a mechanical
   change to switch to global properties later.
 * And after all current features/properties are converted into static
   properties, it will take a trivial patch to switch to global properties.
   Which will allow to:
   * get CPU instance initialized with all parameters passed on -cpu ...
     cmd. line from object_new() call.
   * call cpu_model/featurestr parsing only once before CPUs are created
   * open a road for removing CPUxxxState.cpu_model_str field, when other
     CPUs are similarly converted to subclasses and static properties.
 - re-factor error handling, to use Error instead of fprintf()s, since
   it is anyway passed in for property setter.

Signed-off-by: Igor Mammedov <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 2c728dfef56d468a6a80b4dacdfb7109220d2546
      
https://github.com/qemu/qemu/commit/2c728dfef56d468a6a80b4dacdfb7109220d2546
  Author: Igor Mammedov <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-i386/cpu.c

  Log Message:
  -----------
  target-i386: Remove setting tsc-frequency from x86_def_t

Setting tsc-frequency from x86_def_t is NOP because default tsc_khz
in x86_def_t is 0 and CPUX86State.tsc_khz is also initialized to 0
by default. So there is no need to overwrite tsc_khz with default 0
because field was already initialized to 0.

Custom tsc-frequency setting is not affected due to it being set
without using x86_def_t.

Field tsc_khz in x86_def_t becomes unused with this patch, so drop it
as well.

Signed-off-by: Igor Mammedov <address@hidden>
Reviewed-by: Eduardo Habkost <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 2b8c27549917b3e07fec5807dbd2b6528ceb4efa
      
https://github.com/qemu/qemu/commit/2b8c27549917b3e07fec5807dbd2b6528ceb4efa
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M include/qom/cpu.h
    M qom/cpu.c
    M target-alpha/cpu.c
    M target-ppc/translate_init.c

  Log Message:
  -----------
  cpu: Add model resolution support to CPUClass

Introduce CPUClass::class_by_name and add a default implementation.
Hook up the alpha and ppc implementations.

Introduce a wrapper function cpu_class_by_name().

Signed-off-by: Andreas Färber <address@hidden>


  Commit: 5900d6b2d59875c9b11e4d8cead6d9ddaa9eb787
      
https://github.com/qemu/qemu/commit/5900d6b2d59875c9b11e4d8cead6d9ddaa9eb787
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-arm/cpu.c
    M target-arm/helper.c

  Log Message:
  -----------
  target-arm: Detect attempt to instantiate non-CPU type in cpu_init()

Consolidate model checking into a new arm_cpu_class_by_name().

If the name matches an existing type, also check whether that type is
actually (a sub-type of) TYPE_ARM_CPU.

This fixes, e.g., -cpu tmp105 asserting.

Cc: qemu-stable <address@hidden>
Acked-by: Peter Maydell <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 0e44a02301b081d36e686e767694a770c25160a2
      
https://github.com/qemu/qemu/commit/0e44a02301b081d36e686e767694a770c25160a2
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-alpha/cpu.c

  Log Message:
  -----------
  target-alpha: Detect attempt to instantiate non-CPU type in cpu_init()

Check in alpha_cpu_class_by_name() whether the type found is actually
(a sub-type of) TYPE_ALPHA_CPU.

This fixes, e.g., -cpu typhoon-pcihost asserting.

Signed-off-by: Andreas Färber <address@hidden>


  Commit: bc5b2da32ba54d991e8669b14a771afb3a67f408
      
https://github.com/qemu/qemu/commit/bc5b2da32ba54d991e8669b14a771afb3a67f408
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-m68k/cpu.c
    M target-m68k/helper.c

  Log Message:
  -----------
  target-m68k: Detect attempt to instantiate non-CPU type in cpu_init()

Consolidate model checking into a new m68k_cpu_class_by_name().

If the name matches an existing type, also check whether that type is
(a sub-type of) TYPE_M68K_CPU.

This fixes, e.g., -cpu ide-hd asserting.

Signed-off-by: Andreas Färber <address@hidden>


  Commit: bd039ce0094f3724a87a193c846ee8468ce652b0
      
https://github.com/qemu/qemu/commit/bd039ce0094f3724a87a193c846ee8468ce652b0
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-openrisc/cpu.c

  Log Message:
  -----------
  target-openrisc: Detect attempt to instantiate non-CPU type in cpu_init()

Consolidate model checking into a new openrisc_cpu_class_by_name().

If the name matches an existing type, also check whether that type is
actually (a sub-type of) TYPE_OPENRISC_CPU.

This fixes, e.g., -cpu open_eth asserting.

Cc: address@hidden
Signed-off-by: Andreas Färber <address@hidden>


  Commit: d89e12188d50f7f8a894027789f32fa7ba6226ad
      
https://github.com/qemu/qemu/commit/d89e12188d50f7f8a894027789f32fa7ba6226ad
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-unicore32/cpu.c
    M target-unicore32/helper.c

  Log Message:
  -----------
  target-unicore32: Detect attempt to instantiate non-CPU type in cpu_init()

Consolidate model checking into a new uc32_cpu_class_by_name().

If the name matches an existing type, also check whether that type is
actually (a sub-type of) TYPE_UNICORE32_CPU.

This fixes, e.g., -cpu puv3_dma asserting.

Cc: address@hidden
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 178623789465287624c48f7ef12d0ab83a1dc380
      
https://github.com/qemu/qemu/commit/178623789465287624c48f7ef12d0ab83a1dc380
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

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

  Log Message:
  -----------
  qom: Introduce object_class_is_abstract()

This lets a caller check if an ObjectClass as returned by, e.g.,
object_class_by_name() is instantiatable.

Signed-off-by: Andreas Färber <address@hidden>
Cc: Anthony Liguori <address@hidden>


  Commit: a120c287086e0b03a57f1f4ac7d7aa73fe3d1fe7
      
https://github.com/qemu/qemu/commit/a120c287086e0b03a57f1f4ac7d7aa73fe3d1fe7
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-alpha/cpu.c

  Log Message:
  -----------
  target-alpha: Catch attempt to instantiate abstract type in cpu_init()

This fixes -cpu alpha-cpu asserting.

Cc: address@hidden
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 245fb54db5f8c88c9d73e037178bc3ca1f9a4bb6
      
https://github.com/qemu/qemu/commit/245fb54db5f8c88c9d73e037178bc3ca1f9a4bb6
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-arm/cpu.c

  Log Message:
  -----------
  target-arm: Catch attempt to instantiate abstract type in cpu_init()

This fixes -cpu arm-cpu asserting.

Cc: address@hidden
Acked-by: Peter Maydell <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: cae85065a44b731467dc6a5caee7cfc6d26d9ca3
      
https://github.com/qemu/qemu/commit/cae85065a44b731467dc6a5caee7cfc6d26d9ca3
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-27 (Sun, 27 Jan 2013)

  Changed paths:
    M target-m68k/cpu.c

  Log Message:
  -----------
  target-m68k: Catch attempt to instantiate abstract type in cpu_init()

This fixes -cpu m68k-cpu asserting.

Cc: address@hidden
Signed-off-by: Andreas Färber <address@hidden>


  Commit: c432b7840cfbc35fc0d097428d0a2f2a94983360
      
https://github.com/qemu/qemu/commit/c432b7840cfbc35fc0d097428d0a2f2a94983360
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-28 (Mon, 28 Jan 2013)

  Changed paths:
    M target-openrisc/cpu.c

  Log Message:
  -----------
  target-openrisc: Catch attempt to instantiate abstract type in cpu_init()

There is no abstract OpenRISCCPU yet, but that seems a bug of its own.

Cc: address@hidden
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 4933908ac5974252c1830d69e9493fa79c5ea606
      
https://github.com/qemu/qemu/commit/4933908ac5974252c1830d69e9493fa79c5ea606
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-28 (Mon, 28 Jan 2013)

  Changed paths:
    M target-unicore32/cpu.c

  Log Message:
  -----------
  target-unicore32: Catch attempt to instantiate abstract type in cpu_init()

Fixes -cpu unicore32-cpu asserting.

Cc: address@hidden
Signed-off-by: Andreas Färber <address@hidden>


  Commit: a1ebd6ce3396954185bda6e94ada60c583f6cbea
      
https://github.com/qemu/qemu/commit/a1ebd6ce3396954185bda6e94ada60c583f6cbea
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-28 (Mon, 28 Jan 2013)

  Changed paths:
    M target-openrisc/cpu.c

  Log Message:
  -----------
  target-openrisc: Use type_register() instead of type_register_static()

According to its documentation, type_register_static()'s TypeInfo
argument should exist for the life type of the type.
Therefore use type_register() when registering the list of CPU subtypes.

No functional change with the current implementation.

Cf. 918fd0839eeafc83bd4984364321a947d29041fe for arm.

Signed-off-by: Andreas Färber <address@hidden>


  Commit: 87fb5811e631e79c24adab1f62bee01987cf1606
      
https://github.com/qemu/qemu/commit/87fb5811e631e79c24adab1f62bee01987cf1606
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-28 (Mon, 28 Jan 2013)

  Changed paths:
    M target-unicore32/cpu.c

  Log Message:
  -----------
  target-unicore32: Use type_register() instead of type_register_static()

According to its documentation, type_register_static()'s TypeInfo
argument should exist for the life type of the type.
Therefore use type_register() when registering the list of CPU subtypes.

No functional change with the current implementation.

Cf. 918fd0839eeafc83bd4984364321a947d29041fe for arm.

Signed-off-by: Andreas Färber <address@hidden>


  Commit: 2dddbc2123681f0cc37a891fa61d97a88d5e641c
      
https://github.com/qemu/qemu/commit/2dddbc2123681f0cc37a891fa61d97a88d5e641c
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-28 (Mon, 28 Jan 2013)

  Changed paths:
    M target-m68k/cpu.c

  Log Message:
  -----------
  target-m68k: Use type_register() instead of type_register_static()

According to its documentation, type_register_static()'s TypeInfo
argument should exist for the life type of the type.
Therefore use type_register() when registering the list of CPU subtypes.

No functional change with the current implementation.

Cf. 918fd0839eeafc83bd4984364321a947d29041fe for arm.

Signed-off-by: Andreas Färber <address@hidden>


  Commit: c03c520d508ba8b3a384f9849700987df8e4c328
      
https://github.com/qemu/qemu/commit/c03c520d508ba8b3a384f9849700987df8e4c328
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-28 (Mon, 28 Jan 2013)

  Changed paths:
    M include/qom/cpu.h

  Log Message:
  -----------
  cpu: Unconditionalize CPUState fields

Commits fc8c5b8c41ee5ba69d7a2be63b02a08c7b0b155b (Makefile.user: Define
CONFIG_USER_ONLY for libuser/) and
dd83b06ae61cfa2dc4381ab49f365bd0995fc930 (qom: Introduce CPU class)
specifically prepared the qom/cpu.c file to be compiled differently for
softmmu and *-user. This broke as part of build system refactorings
while CPU patches were in flight, adding conditional fields
kvm_fd (8737c51c0444f832c4e97d7eb7540eae457e08e4) and
kvm_vcpu_dirty (20d695a9254c1b086a456d3b79a3c311236643ba) for softmmu.

linux-user and bsd-user would therefore get a CPUState type with
instance_size ~8 bytes longer than expected.
Fix this by unconditionally having the fields in CPUState.

In practice, target-specific CPU types' instance_size would compensate
this, and upstream qom/cpu.c does not yet touch any affected field.

Signed-off-by: Andreas Färber <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>


  Commit: 290adf38967787bd985a5ec67dc4717e83c29eaa
      
https://github.com/qemu/qemu/commit/290adf38967787bd985a5ec67dc4717e83c29eaa
  Author: Andreas Färber <address@hidden>
  Date:   2013-01-28 (Mon, 28 Jan 2013)

  Changed paths:
    M cpus.c
    M include/sysemu/kvm.h
    M kvm-all.c
    M kvm-stub.c

  Log Message:
  -----------
  kvm: Pass CPUState to kvm_on_sigbus_vcpu()

Since commit 20d695a9254c1b086a456d3b79a3c311236643ba (kvm: Pass
CPUState to kvm_arch_*) CPUArchState is no longer needed.

Allows to change qemu_kvm_eat_signals() argument as well.

Signed-off-by: Andreas Färber <address@hidden>
Reviewed-by: Gleb Natapov <address@hidden>


  Commit: 6cebf7afac9287f7bcaeb0d8fd64fd7b75e3fa2c
      
https://github.com/qemu/qemu/commit/6cebf7afac9287f7bcaeb0d8fd64fd7b75e3fa2c
  Author: Anthony Liguori <address@hidden>
  Date:   2013-01-28 (Mon, 28 Jan 2013)

  Changed paths:
    M blockdev.c
    A docs/virtio-balloon-stats.txt
    M hmp-commands.hx
    M hmp.c
    M hmp.h
    M hw/virtio-balloon.c
    M qapi-schema.json
    M qemu-char.c
    M qemu-options.hx
    M qmp-commands.hx

  Log Message:
  -----------
  Merge remote-tracking branch 'luiz/queue/qmp' into staging

# By Lei Li (3) and others
# Via Luiz Capitulino
* luiz/queue/qmp:
  QAPI: Introduce memchar-read QMP command
  QAPI: Introduce memchar-write QMP command
  qemu-char: Add new char backend CirMemCharDriver
  docs: document virtio-balloon stats
  balloon: re-enable balloon stats
  balloon: drop old stats code & API
  block: Monitor command commit neglects to report some errors


  Commit: 503cb22e055dcf477f9147fa1a3b8ae17c86c9b0
      
https://github.com/qemu/qemu/commit/503cb22e055dcf477f9147fa1a3b8ae17c86c9b0
  Author: Anthony Liguori <address@hidden>
  Date:   2013-01-28 (Mon, 28 Jan 2013)

  Changed paths:
    M block-migration.c
    M block.c
    M block/bochs.c
    M block/cow.c
    M block/mirror.c
    M block/qcow.c
    M block/qcow2.c
    M block/qed.c
    M block/vdi.c
    M block/vmdk.c
    M blockdev.c
    M hmp.c
    M hw/ide/ahci.c
    M hw/ide/ahci.h
    M hw/ide/core.c
    M hw/ide/ich.c
    M include/block/block.h
    M include/block/block_int.h
    M include/qemu-common.h
    A include/qemu/hbitmap.h
    M include/qemu/host-utils.h
    M qapi-schema.json
    M qmp-commands.hx
    M tests/Makefile
    M tests/qemu-iotests/041
    M tests/qemu-iotests/041.out
    A tests/test-hbitmap.c
    M trace-events
    M util/Makefile.objs
    A util/hbitmap.c

  Log Message:
  -----------
  Merge remote-tracking branch 'kwolf/for-anthony' into staging

# By Paolo Bonzini (14) and others
# Via Kevin Wolf
* kwolf/for-anthony: (24 commits)
  ide: Add fall through annotations
  block: Create proper size file for disk mirror
  ahci: Add migration support
  ahci: Change data types in preparation for migration
  ahci: Remove unused AHCIDevice fields
  hbitmap: add assertion on hbitmap_iter_init
  mirror: do nothing on zero-sized disk
  block/vdi: Check for bad signature
  block/vdi: Improved return values from vdi_open
  block/vdi: Improve debug output for signature
  block: Use error code EMEDIUMTYPE for wrong format in some block drivers
  block: Add special error code for wrong format
  mirror: support arbitrarily-sized iterations
  mirror: support more than one in-flight AIO operation
  mirror: add buf-size argument to drive-mirror
  mirror: switch mirror_iteration to AIO
  mirror: allow customizing the granularity
  block: allow customizing the granularity of the dirty bitmap
  block: return count of dirty sectors, not chunks
  mirror: perform COW if the cluster size is bigger than the granularity
  ...


  Commit: ec9466ff2e50213c8318ffdd7003f345278ab795
      
https://github.com/qemu/qemu/commit/ec9466ff2e50213c8318ffdd7003f345278ab795
  Author: Anthony Liguori <address@hidden>
  Date:   2013-01-28 (Mon, 28 Jan 2013)

  Changed paths:
    M cpus.c
    M hw/fw_cfg.c
    M hw/pc.c
    M hw/pc_piix.c
    M hw/ppc/mac_newworld.c
    M hw/ppc/mac_oldworld.c
    M hw/sun4m.c
    M hw/sun4u.c
    M include/qom/cpu.h
    M include/qom/object.h
    M include/sysemu/cpus.h
    M include/sysemu/kvm.h
    M kvm-all.c
    M kvm-stub.c
    M qom/cpu.c
    M qom/object.c
    M target-alpha/cpu.c
    M target-arm/cpu.c
    M target-arm/helper.c
    M target-i386/cpu.c
    M target-i386/cpu.h
    M target-i386/kvm.c
    A target-i386/topology.h
    M target-m68k/cpu.c
    M target-m68k/helper.c
    M target-openrisc/cpu.c
    M target-openrisc/exception_helper.c
    M target-openrisc/fpu_helper.c
    M target-openrisc/int_helper.c
    M target-openrisc/interrupt_helper.c
    M target-openrisc/mmu.c
    M target-openrisc/sys_helper.c
    M target-ppc/kvm.c
    M target-ppc/translate_init.c
    M target-s390x/kvm.c
    M target-unicore32/cpu.c
    M target-unicore32/helper.c
    M tests/.gitignore
    M tests/Makefile
    A tests/test-x86-cpuid.c

  Log Message:
  -----------
  Merge remote-tracking branch 'afaerber/qom-cpu' into staging

* afaerber/qom-cpu: (37 commits)
  kvm: Pass CPUState to kvm_on_sigbus_vcpu()
  cpu: Unconditionalize CPUState fields
  target-m68k: Use type_register() instead of type_register_static()
  target-unicore32: Use type_register() instead of type_register_static()
  target-openrisc: Use type_register() instead of type_register_static()
  target-unicore32: Catch attempt to instantiate abstract type in cpu_init()
  target-openrisc: Catch attempt to instantiate abstract type in cpu_init()
  target-m68k: Catch attempt to instantiate abstract type in cpu_init()
  target-arm: Catch attempt to instantiate abstract type in cpu_init()
  target-alpha: Catch attempt to instantiate abstract type in cpu_init()
  qom: Introduce object_class_is_abstract()
  target-unicore32: Detect attempt to instantiate non-CPU type in cpu_init()
  target-openrisc: Detect attempt to instantiate non-CPU type in cpu_init()
  target-m68k: Detect attempt to instantiate non-CPU type in cpu_init()
  target-alpha: Detect attempt to instantiate non-CPU type in cpu_init()
  target-arm: Detect attempt to instantiate non-CPU type in cpu_init()
  cpu: Add model resolution support to CPUClass
  target-i386: Remove setting tsc-frequency from x86_def_t
  target-i386: Set custom features/properties without intermediate x86_def_t
  target-i386: Remove vendor_override field from CPUX86State
  ...

Conflicts:
        tests/Makefile

Resolved simple conflict caused by lack of context in Makefile

Signed-off-by: Anthony Liguori <address@hidden>


Compare: https://github.com/qemu/qemu/compare/6034fe7bdb55...ec9466ff2e50

reply via email to

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