1. 07 4月, 2016 2 次提交
  2. 06 4月, 2016 6 次提交
  3. 05 4月, 2016 32 次提交
    • K
      Merge remote-tracking branch 'mreitz/tags/pull-block-for-kevin-2016-04-05' into queue-block · 6a5c357f
      Kevin Wolf 提交于
      Block patches for the 2.6 release
      
      # gpg: Signature made Tue Apr  5 17:23:48 2016 CEST using RSA key ID E838ACAD
      # gpg: Good signature from "Max Reitz <mreitz@redhat.com>"
      
      * mreitz/tags/pull-block-for-kevin-2016-04-05:
        crypto: Avoid memory leak on failure
        qemu-iotests: 149: Use "/usr/bin/env python"
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      6a5c357f
    • E
      crypto: Avoid memory leak on failure · 95c3df5a
      Eric Blake 提交于
      Commit 78368575 introduced a memory leak due to invalid use of
      Error vs. visit_type_end().  If visiting the intermediate
      members fails, we clear the error and unconditionally use
      visit_end_struct() on the same error object; but if that
      cleanup succeeds, we then skip the qapi_free call.
      
      Until a later patch adds visit_check_struct(), the only safe
      approach is to use two separate error objects.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-id: 1459526222-30052-1-git-send-email-eblake@redhat.com
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      95c3df5a
    • F
      qemu-iotests: 149: Use "/usr/bin/env python" · 08db36f6
      Fam Zheng 提交于
      Do the same as other scripts, to pick the correct interpreter between
      python2 and python3 from the environment.
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Message-id: 1459504593-2692-1-git-send-email-famz@redhat.com
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      08db36f6
    • P
      Merge remote-tracking branch 'remotes/berrange/tags/pull-qcrypto-2016-04-05-1' into staging · a226f765
      Peter Maydell 提交于
      Merge QCrypto fixes 2016/04/05 v1
      
      # gpg: Signature made Tue 05 Apr 2016 10:53:59 BST using RSA key ID 15104FDF
      # gpg: Good signature from "Daniel P. Berrange <dan@berrange.com>"
      # gpg:                 aka "Daniel P. Berrange <berrange@redhat.com>"
      
      * remotes/berrange/tags/pull-qcrypto-2016-04-05-1:
        crypto: fix nettle config check for running pbkdf test
        crypto: fix typo in docs for secret object type
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      a226f765
    • P
      Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging · cc621a98
      Peter Maydell 提交于
      * FreeBSD build fixes (atomics, qapi/error.h)
      * x86 KVM fixes (SynIC, KVM_GET/SET_MSRS)
      * Memory API doc fix
      * checkpatch fix
      * Chardev and socket fixes
      * NBD fixes
      * exec.c SEGV fix
      
      # gpg: Signature made Tue 05 Apr 2016 10:47:49 BST using RSA key ID 78C7AE83
      # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>"
      # gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>"
      
      * remotes/bonzini/tags/for-upstream:
        net: fix missing include of qapi/error.h in netmap.c
        nbd: Fix poor debug message
        include/qemu/atomic: add compile time asserts
        cpus: don't use atomic_read for vm_clock_warp_start
        nbd: don't request FUA on FLUSH
        doc/memory: update MMIO section
        char: ensure all clients are in non-blocking mode
        char: fix broken EAGAIN retry on OS-X due to errno clobbering
        util: retry getaddrinfo if getting EAI_BADFLAGS with AI_V4MAPPED
        checkpatch: add target_ulong to typelist
        target-i386: assert that KVM_GET/SET_MSRS can set all requested MSRs
        target-i386: do not pass MSR_TSC_AUX to KVM ioctls if CPUID bit is not set
        memory: fix segv on qemu_ram_free(block=0x0)
        target-i386/kvm: Hyper-V VMBus hypercalls blank handlers
        update Linux headers to 4.6
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      cc621a98
    • D
      crypto: fix nettle config check for running pbkdf test · c44e92a4
      Daniel P. Berrange 提交于
      The pbkdf test is being built based on a check for CONFIG_NETTLE.
      As of fff2f982, it should be
      instead checking CONFIG_NETTLE_KDF
      Reported-by: N"Dr. David Alan Gilbert" <dgilbert@redhat.com>
      Tested-by: NBruce Rogers <brogers@suse.com>
      Tested-by: NEd Maste <emaste@freebsd.org>
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      c44e92a4
    • D
      crypto: fix typo in docs for secret object type · 69c0b278
      Daniel P. Berrange 提交于
      The docs for the secret object type specified the wrong number
      of bytes for the AES initialization vector.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      69c0b278
    • D
      net: fix missing include of qapi/error.h in netmap.c · 2354beba
      Daniel P. Berrange 提交于
      The netmap.c file fails to build on FreeBSD with
      
      net/netmap.c:95:9: warning: implicit declaration of function 'error_setg_errno' is invalid in C99 [-Wimplicit-function-declaration]
           error_setg_errno(errp, errno, "Failed to nm_open() %s",
           ^
      net/netmap.c:432:9: warning: implicit declaration of function 'error_propagate' is invalid in C99 [-Wimplicit-function-declaration]
           error_propagate(errp, err);
           ^
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      Message-Id: <1459429690-6144-1-git-send-email-berrange@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      2354beba
    • E
      nbd: Fix poor debug message · b6afc654
      Eric Blake 提交于
      The client sends messages to the server, not itself.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1459459222-8637-3-git-send-email-eblake@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      b6afc654
    • A
      include/qemu/atomic: add compile time asserts · ca47a926
      Alex Bennée 提交于
      To be safely portable no atomic access should be trying to do more than
      the natural word width of the host. The most common abuse is trying to
      atomically access 64 bit values on a 32 bit host.
      
      This patch adds some QEMU_BUILD_BUG_ON to the __atomic instrinsic paths
      to create a build failure if (sizeof(*ptr) > sizeof(void *)).
      Signed-off-by: NAlex Bennée <alex.bennee@linaro.org>
      Message-Id: <1459780549-12942-3-git-send-email-alex.bennee@linaro.org>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      ca47a926
    • A
      cpus: don't use atomic_read for vm_clock_warp_start · ccffff48
      Alex Bennée 提交于
      As vm_clock_warp_start is a 64 bit value this causes problems for the
      compiler trying to come up with a suitable atomic operation on 32 bit
      hosts. Because the variable is protected by vm_clock_seqlock, we check its
      value inside a seqlock critical section.
      Signed-off-by: NAlex Bennée <alex.bennee@linaro.org>
      Message-Id: <1459780549-12942-2-git-send-email-alex.bennee@linaro.org>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      ccffff48
    • E
      nbd: don't request FUA on FLUSH · a89ef0c3
      Eric Blake 提交于
      The NBD protocol does not clearly document what will happen
      if a client sends NBD_CMD_FLAG_FUA on NBD_CMD_FLUSH.
      Historically, both the qemu and upstream NBD servers silently
      ignored that flag, but that feels a bit risky.  Meanwhile, the
      qemu NBD client unconditionally sends the flag (without even
      bothering to check whether the caller cares; at least with
      NBD_CMD_WRITE the client only sends FUA if requested by a
      higher layer).
      
      There is ongoing discussion on the NBD list to fix the
      protocol documentation to require that the server MUST ignore
      the flag (unless the kernel folks can better explain what FUA
      means for a flush), but until those doc improvements land, the
      current nbd.git master was recently changed to reject the flag
      with EINVAL (see nbd commit ab22e082), which now makes it
      impossible for a qemu client to use FLUSH with an upstream NBD
      server.
      
      We should not send FUA with flush unless the upstream protocol
      documents what it will do, and even then, it should be something
      that the caller can opt into, rather than being unconditional.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1459526902-32561-1-git-send-email-eblake@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      a89ef0c3
    • C
      doc/memory: update MMIO section · 0c52a80e
      Cao jin 提交于
      There is no memory_region_io(). And remove a stray '-'.
      Signed-off-by: NCao jin <caoj.fnst@cn.fujitsu.com>
      Message-Id: <1459507677-16662-1-git-send-email-caoj.fnst@cn.fujitsu.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      0c52a80e
    • D
      char: ensure all clients are in non-blocking mode · 64c800f8
      Daniel P. Berrange 提交于
      Only some callers of tcp_chr_new_client are putting the
      socket client into non-blocking mode. Move the call to
      qio_channel_set_blocking() into the tcp_chr_new_client
      method to guarantee that all code paths set non-blocking
      mode
      Reported-by: NAndrew Baumann <Andrew.Baumann@microsoft.com>
      Reported-by: NLaurent Vivier <lvivier@redhat.com>
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      Message-Id: <1458324041-22709-1-git-send-email-berrange@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      64c800f8
    • D
      char: fix broken EAGAIN retry on OS-X due to errno clobbering · 53628efb
      Daniel P. Berrange 提交于
      Some of the chardev I/O paths really want to write the
      complete data buffer even though the channel is in
      non-blocking mode. To achieve this they look for EAGAIN
      and g_usleep() for 100ms. Unfortunately the code is set
      to check errno == EAGAIN a second time, after the g_usleep()
      call has completed. On OS-X at least, g_usleep clobbers
      errno to ETIMEDOUT, causing the retry to be skipped.
      
      This failure to retry means the full data isn't written
      to the chardev backend, which causes various failures
      including making the tests/ahci-test qtest hang.
      
      Rather than playing games trying to reset errno just
      simplify the code to use a goto to retry instead of a
      a loop.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      Message-Id: <1459438168-8146-2-git-send-email-berrange@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      53628efb
    • D
      util: retry getaddrinfo if getting EAI_BADFLAGS with AI_V4MAPPED · 340849a9
      Daniel P. Berrange 提交于
      The FreeBSD header files define the AI_V4MAPPED but its
      implementation of getaddrinfo() always returns an error
      when that flag is set. eg
      
        address resolution failed for localhost:9000: Invalid value for ai_flags
      
      There are also reports of the same problem on OS-X 10.6
      
      Since AI_V4MAPPED is not critical functionality, if we
      get an EAI_BADFLAGS error then just retry without the
      AI_V4MAPPED flag set. Use a static var to cache this
      status so we don't have to retry on every single call.
      
      Also remove its use from the test suite since it serves
      no useful purpose there.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      Message-Id: <1459786920-15961-1-git-send-email-berrange@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      340849a9
    • C
      checkpatch: add target_ulong to typelist · f0707d2e
      Cédric Le Goater 提交于
      In some occasions, a patch [1] can start with a hunk containing a
      simple type cast. At the time annotate_values() is run, the type is
      unknown and the cast type is misinterpreted as a identifier, resulting
      in an error if it is followed with a negative value:
      
      	ERROR: spaces required around that '-' (ctx:WxV)
      
      It seems complex to catch all possible types in a cast expression. So,
      as a fallback solution, let's add some common qemu types to the
      typeList array.
      
      [1] http://lists.nongnu.org/archive/html/qemu-devel/2016-03/msg06741.htmlSigned-off-by: NCédric Le Goater <clg@fr.ibm.com>
      Message-Id: <1459503606-31603-1-git-send-email-clg@fr.ibm.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      f0707d2e
    • P
      target-i386: assert that KVM_GET/SET_MSRS can set all requested MSRs · 48e1a45c
      Paolo Bonzini 提交于
      This would have caught the bug in the previous patch.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      48e1a45c
    • P
      target-i386: do not pass MSR_TSC_AUX to KVM ioctls if CPUID bit is not set · 273c515c
      Paolo Bonzini 提交于
      KVM does not let you read or write this MSR if the corresponding CPUID
      bit is not set.  This in turn causes MSRs that come after MSR_TSC_AUX
      to be ignored by KVM_SET_MSRS.
      
      One visible symptom is that s3.flat from kvm-unit-tests fails with
      CPUs that do not have RDTSCP, because the SMBASE is not reset to
      0x30000 after reset.
      
      Fixes: c9b8f6b6
      Cc: qemu-stable@nongnu.org
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      273c515c
    • M
      memory: fix segv on qemu_ram_free(block=0x0) · 85bc2a15
      Marc-André Lureau 提交于
      Since f1060c55, the pointer is directly passed to
      qemu_ram_free(). However, on initialization failure, it may be called
      with a NULL pointer. Return immediately in this case.
      
      This fixes a SEGV when memory initialization failed, for example
      permission denied on open backing store /dev/hugepages, with -object
      memory-backend-file,mem-path=/dev/hugepages.
      
      Program received signal SIGSEGV, Segmentation fault.
      0x00005555556e67e7 in qemu_ram_free (block=0x0) at /home/elmarco/src/qemu/exec.c:1775
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <1459250451-29984-1-git-send-email-marcandre.lureau@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      85bc2a15
    • A
      target-i386/kvm: Hyper-V VMBus hypercalls blank handlers · 1b0d9b05
      Andrey Smetanin 提交于
      Add Hyper-V VMBus hypercalls blank handlers which
      just returns error code - HV_STATUS_INVALID_HYPERCALL_CODE.
      This is required when the synthetic interrupt controller is
      active.
      
      Fixes: 50efe82cSigned-off-by: NAndrey Smetanin <asmetanin@virtuozzo.com>
      Reviewed-by: NRoman Kagan <rkagan@virtuozzo.com>
      CC: Paolo Bonzini <pbonzini@redhat.com>
      CC: Richard Henderson <rth@twiddle.net>
      CC: Eduardo Habkost <ehabkost@redhat.com>
      CC: "Andreas Färber" <afaerber@suse.de>
      CC: Marcelo Tosatti <mtosatti@redhat.com>
      CC: Roman Kagan <rkagan@virtuozzo.com>
      CC: Denis V. Lunev <den@openvz.org>
      CC: kvm@vger.kernel.org
      Message-Id: <1456309368-29769-2-git-send-email-asmetanin@virtuozzo.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      1b0d9b05
    • P
      update Linux headers to 4.6 · b89485a5
      Paolo Bonzini 提交于
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      b89485a5
    • P
      Merge remote-tracking branch 'remotes/stsquad/tags/travis-pull-05042016' into staging · 972e3ca3
      Peter Maydell 提交于
      This pull request includes:
        - further collapse of the build matrix
        - enabling MacOSX in the build
        - make -j3 change
      
      Other pending updates are deferred for later in the cycle.
      
      # gpg: Signature made Tue 05 Apr 2016 10:11:25 BST using RSA key ID 5A9E2A44
      # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>"
      
      * remotes/stsquad/tags/travis-pull-05042016:
        .travis.yml: make -j3
        .travis.yml: enable OSX builds
        .travis.yml: collapse the test matrix
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      972e3ca3
    • A
      .travis.yml: make -j3 · 7436268c
      Alex Bennée 提交于
      The move from Travis VMs to Containers came with a upgrade from 1.5
      cores to 2. The received wisdom is -j N+1 means a core can be doing work
      while other threads wait for IO to complete. This is hard to test on the
      Travis infrastructure but an initial before/after eyeballing seems to
      confirm it is an improvement.
      Signed-off-by: NAlex Bennée <alex.bennee@linaro.org>
      Reviewed-by: NDavid Gibson <david@gibson.dropbear.id.au>
      7436268c
    • A
      .travis.yml: enable OSX builds · 1d002037
      Alex Bennée 提交于
      Travis has support for OSX builds. Making the setup work cleanly
      involves a little hacking about with the .travis.yml file but rather
      than make it too messy I've pushed all the "brew" install stuff into a
      support script called ./scripts/macosx-brew.sh.
      
      Currently only the default ./configure ${CONFIG} is built as I'm not
      sure what extra coverage would come from the other build stanzas.
      Signed-off-by: NAlex Bennée <alex.bennee@linaro.org>
      Acked-by: NPeter Maydell <peter.maydell@linaro.org>
      1d002037
    • A
      .travis.yml: collapse the test matrix · 6c933291
      Alex Bennée 提交于
      Remove the concept of TARGETS and build the complete target list for
      each config combination. Now the matrix is just based on CONFIG stanzas
      and we use the additional stuff for:
      
        - things that only work on one compiler (sparse, gcov, gprof)
        - combos where "make check" fails
      Signed-off-by: NAlex Bennée <alex.bennee@linaro.org>
      Reviewed-by: NDavid Gibson <david@gibson.dropbear.id.au>
      6c933291
    • P
      Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.6-20160405' into staging · 1dbc7cc9
      Peter Maydell 提交于
      ppc patch queue for 2016-03-24
      
      Three bugfixes for target-ppc, pseries machine type and related devices.
      
      1. Fix a bug in the core code where kvm_vcpu_dirty would not be set
         before the very first system reset.  This meant that if things in
         the reset path did their own cpu_synchronize_state() it would pull
         stale data out of KVM.
      
         On ppc this, in combination with a previous cleanup meant that the
         MSR would be zeroed before entry, instead of correctly having the
         SF (64-bit mode) bit set.
      
      2. Allow immediate detach of hot-added PCI devices which haven't yet
         been announced to the guest.
      
         This fixes a regression: because of a case where we now defer
         announcement of non-zero functions to the guest, an incorrect
         hot-add of such a device can't be backed out until the add is
         completed, which is counter-intuitive to say the least.
      
      3. Fix migration of alternate interrupt locations.  The location of
         interrupt vectors can be affected by the LPCR, and we weren't
         correctly recalculating this after migration of a non-standard LPCR
         value.
      
      # gpg: Signature made Tue 05 Apr 2016 03:13:41 BST using RSA key ID 20D9B392
      # gpg: Good signature from "David Gibson <david@gibson.dropbear.id.au>"
      # gpg:                 aka "David Gibson (Red Hat) <dgibson@redhat.com>"
      # gpg:                 aka "David Gibson (ozlabs.org) <dgibson@ozlabs.org>"
      # 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: 75F4 6586 AE61 A66C C44E  87DC 6C38 CACA 20D9 B392
      
      * remotes/dgibson/tags/ppc-for-2.6-20160405:
        vl: Move cpu_synchronize_all_states() into qemu_system_reset()
        spapr_drc: enable immediate detach for unsignalled devices
        ppc: Rework POWER7 & POWER8 exception model
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      1dbc7cc9
    • K
      block: Forbid I/O throttling on nodes with multiple parents for 2.6 · 76b22320
      Kevin Wolf 提交于
      As the patches to move I/O throttling to BlockBackend didn't make it in
      time for the 2.6 release, but the release adds new ways of configuring
      VMs whose behaviour would change once the move is done, we need to
      outlaw such configurations temporarily.
      
      The problem exists whenever a BDS has more users than just its BB, for
      example it is used as a backing file for another node. (This wasn't
      possible in 2.5 yet as we introduced node references to specify a
      backing file only recently.) In these cases, the throttling would
      apply to these other users now, but after moving throttling to the
      BlockBackend the other users wouldn't be throttled any more.
      
      This patch prevents making new references to a throttled node as well as
      using monitor commands to throttle a node with multiple parents.
      
      Compared to 2.5 this changes behaviour in some corner cases where
      references were allowed before, like bs->file or Quorum children. It
      seems reasonable to assume that users didn't use I/O throttling on such
      low level nodes. With the upcoming move of throttling into BlockBackend,
      such configurations won't be possible anyway.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      76b22320
    • P
      block: forbid x-blockdev-del from acting on DriveInfo · 5cf87fd6
      Paolo Bonzini 提交于
      Failing on -drive/drive_add created BlockBackends was a
      requirement for x-blockdev-del, but it sneaked through
      the patch review.  Let's fix it now.
      
      Example:
      
      $ x86_64-softmmu/qemu-system-x86_64 -drive if=none,file=null-co://,id=null -qmp stdio
      >> {'execute':'qmp_capabilities'}
      << {"return": {}}
      >> {'execute':'x-blockdev-del','arguments':{'id':'null'}}
      << {"error": {"class": "GenericError", "desc": "Deleting block backend added with drive-add is not supported"}}
      
      And without a DriveInfo:
      
      >> { "execute": "blockdev-add", "arguments": { "options": { "driver":"null-co", "id":"null2"}}}
      << {"return": {}}
      >> {'execute':'x-blockdev-del','arguments':{'id':'null2'}}
      << {"return": {}}
      Suggested-by: NKevin Wolf <kwolf@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      5cf87fd6
    • D
      vl: Move cpu_synchronize_all_states() into qemu_system_reset() · efdaf797
      David Gibson 提交于
      There are currently 3 calls to qemu_system_reset() in vl.c.  Two of them
      are immediately preceded by a cpu_synchronize_all_states9) and the
      remaining one should be.
      
      The one which doesn't is the very first reset called directly from main().
      Without a cpu_synchronize_all_states(), kvm_vcpu_dirty is false at this
      point from the earlier cpu_synchronize_all_post_init().  That's incorrect
      because the reset path is quite likely to update the CPU state, and that
      updated state should be pushed back to KVM, not overwritten with stale
      data pushed to KVM immediately after init.
      
      This patch moves the call to cpu_synchronize_all_states() into
      qemu_system_reset() for safety, so it is always called.  AFAICT this should
      be safe for the handful of callers outside vl.c - these all appear to be in
      places where the cpu state is already synchronized so the extra call
      will be a no-op.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Acked-by: NPaolo Bonzini <pbonzini@redhat.com>
      Tested-by: NLaurent Vivier <lvivier@redhat.com>
      efdaf797
    • M
      spapr_drc: enable immediate detach for unsignalled devices · f40eb921
      Michael Roth 提交于
      Currently spapr doesn't support "aborting" hotplug of PCI
      devices by allowing device_del to immediately remove the
      device if we haven't signalled the presence of the device
      to the guest.
      
      In the past this wasn't an issue, since we always immediately
      signalled device attach and simply relied on full guest-aware
      add->remove path for device removal. However, as of 788d2599,
      we now defer signalling for PCI functions until function 0
      is attached, so now we need to deal with these "abort" operations
      for cases where a user hotplugs a non-0 function, then opts to
      remove it prior hotplugging function 0. Currently they'd have to
      reboot before the unplug completed. PCIe multifunction hotplug
      does not have this requirement however, so from a management
      implementation perspective it would be good to address this within
      the same release as 788d2599.
      
      We accomplish this by simply adding a 'signalled' flag to track
      whether a device hotplug event has been sent to the guest. If it
      hasn't, we allow immediate removal under the assumption that the
      guest will not be using the device. Devices present at boot/reset
      time are also assumed to be 'signalled'.
      
      For CPU/memory/etc, signalling will still happen immediately
      as part of device_add, so only PCI functions should be affected.
      
      Cc: bharata@linux.vnet.ibm.com
      Cc: david@gibson.dropbear.id.au
      Cc: sbhat@linux.vnet.ibm.com
      Cc: qemu-ppc@nongnu.org
      Signed-off-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      [dwg: This fixes a regression where an incorrect hot-add of a non-zero
            function can no longer be backed out until function 0 is added]
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      f40eb921
    • C
      ppc: Rework POWER7 & POWER8 exception model · 5c94b2a5
      Cédric Le Goater 提交于
      From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      
      This patch fixes the current AIL implementation for POWER8. The
      interrupt vector address can be calculated directly from LPCR when the
      exception is handled. The excp_prefix update becomes useless and we
      can cleanup the H_SET_MODE hcall.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      [clg: Removed LPES0/1 handling for HV vs. !HV
            Fixed LPCR_ILE case for POWERPC_EXCP_POWER8 ]
      Signed-off-by: NCédric Le Goater <clg@fr.ibm.com>
      [dwg: This was written as a cleanup, but it also fixes a real bug
            where setting an alternative interrupt location would not be
            correctly migrated]
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      5c94b2a5