1. 23 11月, 2018 4 次提交
    • A
      block: Update BlockDriverState.inherits_from on bdrv_set_backing_hd() · 0065c455
      Alberto Garcia 提交于
      When a BlockDriverState's child is opened (be it a backing file, the
      protocol layer, or any other) inherits_from is set to point to the
      parent node. Children opened separately and then attached to a parent
      don't have this pointer set.
      
      bdrv_reopen_queue_child() uses this to determine whether a node's
      children must also be reopened inheriting the options from the parent
      or not. If inherits_from points to the parent then the child is
      reopened and its options can be changed, like in this example:
      
         $ qemu-img create -f qcow2 hd0.qcow2 1M
         $ qemu-img create -f qcow2 hd1.qcow2 1M
         $ $QEMU -drive if=none,node-name=hd0,file=hd0.qcow2,\
                        backing.driver=qcow2,backing.file.filename=hd1.qcow2
         (qemu) qemu-io hd0 "reopen -o backing.l2-cache-size=2M"
      
      If the child does not inherit from the parent then it does not get
      reopened and its options cannot be changed:
      
         $ $QEMU -drive if=none,node-name=hd1,file=hd1.qcow2
                 -drive if=none,node-name=hd0,file=hd0.qcow2,backing=hd1
         (qemu) qemu-io hd0 "reopen -o backing.l2-cache-size=2M"
         Cannot change the option 'backing.l2-cache-size'
      
      If a disk image has a chain of backing files then all of them are also
      connected through their inherits_from pointers (i.e. it's possible to
      walk the chain in reverse order from base to top).
      
      However this is broken if the intermediate nodes are removed using
      e.g. block-stream because the inherits_from pointer from the base node
      becomes NULL:
      
         $ qemu-img create -f qcow2 hd0.qcow2 1M
         $ qemu-img create -f qcow2 -b hd0.qcow2 hd1.qcow2
         $ qemu-img create -f qcow2 -b hd1.qcow2 hd2.qcow2
         $ $QEMU -drive if=none,file=hd2.qcow2
         (qemu) qemu-io none0 "reopen -o backing.l2-cache-size=2M"
         (qemu) block_stream none0 0 hd0.qcow2
         (qemu) qemu-io none0 "reopen -o backing.l2-cache-size=2M"
         Cannot change the option 'backing.l2-cache-size'
      
      This patch updates the inherits_from pointer if the intermediate nodes
      of a backing chain are removed using bdrv_set_backing_hd(), and adds a
      test case for this scenario.
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      0065c455
    • E
      iotests: Enhance 223 to cover multiple bitmap granularities · a237dea3
      Eric Blake 提交于
      Testing granularity at the same size as the cluster isn't quite
      as fun as what happens when it is larger or smaller.  This
      enhancement also shows that qemu's nbd server can serve the
      same disk over multiple exports simultaneously.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Tested-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      a237dea3
    • L
      nvme: fix bug with PCI IRQ pins on teardown · ad3a7e45
      Logan Gunthorpe 提交于
      When the submission and completion queues are being torn down
      the IRQ will be asserted for the completion queue when the
      submsission queue is deleted. Then when the completion queue
      is deleted it stays asserted. Thus, on systems that do
      not use MSI, no further interrupts can be triggered on the host.
      
      Linux sees this as a long delay when unbinding the nvme device.
      Eventually the interrupt timeout occurs and it continues.
      
      To fix this we ensure we deassert the IRQ for a CQ when it is
      deleted.
      Signed-off-by: NLogan Gunthorpe <logang@deltatee.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      ad3a7e45
    • P
      nvme: fix CMB endianness confusion · 71a86dde
      Paolo Bonzini 提交于
      The CMB is marked as DEVICE_LITTLE_ENDIAN, so the data must be
      read/written as if it was little-endian output (in the case of
      big endian, we get two swaps, one in the memory core and one
      in nvme.c).
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Tested-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      71a86dde
  2. 22 11月, 2018 6 次提交
  3. 21 11月, 2018 6 次提交
  4. 20 11月, 2018 23 次提交
  5. 19 11月, 2018 1 次提交
    • P
      Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20181119' into staging · d304cf01
      Peter Maydell 提交于
      target-arm queue:
       * various MAINTAINERS file updates
       * hw/block/onenand: use qemu_log_mask() for reporting
       * hw/block/onenand: Fix off-by-one error allowing out-of-bounds read
         on the n800 and n810 machine models
       * target/arm: fix smc incorrectly trapping to EL3 when secure is off
       * hw/arm/stm32f205: Fix the UART and Timer region size
       * target/arm: read ID registers for KVM guests so they can be
         used to gate "is feature X present" checks
      
      # gpg: Signature made Mon 19 Nov 2018 15:56:44 GMT
      # gpg:                using RSA key 3C2525ED14360CDE
      # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>"
      # gpg:                 aka "Peter Maydell <pmaydell@gmail.com>"
      # gpg:                 aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>"
      # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE
      
      * remotes/pmaydell/tags/pull-target-arm-20181119:
        MAINTAINERS: list myself as maintainer for various Arm boards
        hw/block/onenand: use qemu_log_mask() for reporting
        hw/block/onenand: Fix off-by-one error allowing out-of-bounds read
        target/arm: fix smc incorrectly trapping to EL3 when secure is off
        hw/arm/stm32f205: Fix the UART and Timer region size
        MAINTAINERS: Add entries for missing ARM boards
        target/arm: Fill in ARMISARegisters for kvm32
        target/arm: Introduce read_sys_reg32 for kvm32
        target/arm: Fill in ARMISARegisters for kvm64
        target/arm: Install ARMISARegisters from kvm host
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      d304cf01