1. 26 1月, 2016 9 次提交
    • J
      fdc: add drive type option · fff4687b
      John Snow 提交于
      This patch adds a new explicit Floppy Drive Type option. The existing
      behavior in QEMU is to automatically guess a drive type based on the
      media inserted, or if a diskette is not present, arbitrarily assign one.
      
      This behavior can be described as "auto." This patch adds the option
      to pick an explicit behavior: 120, 144, 288 or none. The new "auto"
      option is intended to mimic current behavior, while the other types
      pick one explicitly.
      
      Set the type given by the CLI during fd_init. If the type remains the
      default (auto), we'll attempt to scan an inserted diskette if present
      to determine a type. If auto is selected but no diskette is present,
      we fall back to a predetermined default (currently 1.44MB to match
      legacy QEMU behavior.)
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Message-id: 1453495865-9649-9-git-send-email-jsnow@redhat.com
      fff4687b
    • J
      fdc: Add fallback option · a73275dd
      John Snow 提交于
      Currently, QEMU chooses a drive type automatically based on the inserted
      media. If there is no disk inserted, it chooses a 1.44MB drive type.
      
      Change this behavior to be configurable, but leave it defaulted to 1.44.
      
      This is not earnestly intended to be used by a user or a management
      library, but rather exists so that pre-2.6 board types can configure it
      to be a legacy value.
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Message-id: 1453495865-9649-8-git-send-email-jsnow@redhat.com
      a73275dd
    • J
      fdc: add pick_drive · d5d47efc
      John Snow 提交于
      Split apart pick_geometry by creating a pick_drive routine that will only
      ever called during device bring-up instead of relying on pick_geometry to
      be used in both cases.
      
      With this change, the drive field is changed to be 'write once'. It is
      not altered after the initialization routines exit.
      
      media_validated does not need to be migrated. The target VM
      will just revalidate the media on post_load anyway.
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Message-id: 1453495865-9649-7-git-send-email-jsnow@redhat.com
      d5d47efc
    • J
      fdc: Throw an assertion on misconfigured fd_formats table · 69ce1ac2
      John Snow 提交于
      pick_geometry is a convoluted function that makes it difficult to tell
      at a glance what QEMU's current behavior for choosing a floppy drive
      type is when it can't quite identify the diskette.
      
      The code iterates over all entries in the candidate geometry table
      ("fd_formats") and if our specific drive type matches a row in the table,
      then either "match" is set to that entry (an exact match) and the loop
      exits, or "first_match" will be non-negative (the first such entry that
      shares the same drive type), and the loop continues. If our specific
      drive type is NONE, then all drive types in the candidate geometry table
      are considered. After iteration, if "match" was not set, we fall back to
      "first match".
      
      This means that either "match" was set, or we exited the loop without an
      exact match, in which case:
      
      - If drive type is NONE, the default is truly fd_formats[0], a 1.44MB
        type, because "first_match" will always get set to the first item.
      
      - If drive type is not NONE, pick_geometry's iteration was fussier and
        only looked at rows that matched our drive type. However, since all
        possible drive types are represented in the table, we still know that
        "first match" was set.
      
      - If drive type is not NONE and the fd_formats table lists no options for
        our drive type, we choose fd_formats[1], an incomprehensibly bizarre
        choice that can never happen anyway.
      
      Correct this: If first_match is -1, it can ONLY mean we didn't edit our
      fd_formats table correctly. Throw an assertion instead.
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Message-id: 1453495865-9649-6-git-send-email-jsnow@redhat.com
      69ce1ac2
    • J
      fdc: add disk field · 16c1e3ec
      John Snow 提交于
      Currently, 'drive' is used both to represent the current diskette
      type as well as the current drive type.
      
      This patch adds a 'disk' field that is updated explicitly to match
      the type of the disk.
      
      As of this patch, disk and drive are always the same, but forthcoming
      patches to change the behavior of pick_geometry will invalidate this
      assumption.
      
      disk does not need to be migrated because it is not user-visible state
      nor is it currently used for any calculations. It is purely informative,
      and will be rebuilt automatically via fd_revalidate on the new host.
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Message-id: 1453495865-9649-5-git-send-email-jsnow@redhat.com
      16c1e3ec
    • J
      fdc: add drive type qapi enum · 2da44dd0
      John Snow 提交于
      Change the floppy drive type to a QAPI enum type, to allow us to
      specify the floppy drive type from the CLI in a forthcoming patch.
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Message-id: 1453495865-9649-4-git-send-email-jsnow@redhat.com
      2da44dd0
    • J
      fdc: reduce number of pick_geometry arguments · 21862658
      John Snow 提交于
      Modify this function to operate directly on FDrive objects instead of
      unpacking and passing all of those parameters manually. Reduces the
      complexity in the caller and reduces the number of args to just one.
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Message-id: 1453495865-9649-3-git-send-email-jsnow@redhat.com
      21862658
    • J
      fdc: move pick_geometry · 9a972233
      John Snow 提交于
      Code motion: I want to refactor this function to work with FDrive
      directly, so shuffle it below that definition.
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Message-id: 1453495865-9649-2-git-send-email-jsnow@redhat.com
      9a972233
    • S
      ide: Correct the CHS 'cyls_max' limit to be 65535 · 4f086994
      Shmulik Ladkani 提交于
      In b7eb0c9f:
        hw/block-common: Factor out fall back to legacy -drive cyls=...
      'blkconf_geometry()' was introduced, factoring out CHS limit validation
      code that was repeated in ide, scsi, virtio-blk.
      
      The original IDE CHS limit prior b7eb0c9f was 65535,16,255 (as per ATA
      CHS addressing).
      However the 'cyls_max' argument passed to 'blkconf_geometry' in the
      ide_dev_initfn case was accidentally set to 65536 instead of 65535.
      
      Fix, providing the correct 'cyls_max'.
      Signed-off-by: NShmulik Ladkani <shmulik.ladkani@ravellosystems.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Message-id: 1453112371-29760-1-git-send-email-shmulik.ladkani@ravellosystems.com
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      4f086994
  2. 25 1月, 2016 1 次提交
  3. 23 1月, 2016 4 次提交
  4. 22 1月, 2016 19 次提交
  5. 21 1月, 2016 7 次提交
    • P
      Merge remote-tracking branch 'remotes/ehabkost/tags/x86-pull-request' into staging · 83446463
      Peter Maydell 提交于
      X86 queue, 2016-01-21
      
      # gpg: Signature made Thu 21 Jan 2016 15:08:40 GMT using RSA key ID 984DC5A6
      # gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>"
      
      * remotes/ehabkost/tags/x86-pull-request:
        target-i386: Add PKU and and OSPKE support
        target-i386: Add support to migrate vcpu's TSC rate
        target-i386: Reorganize TSC rate setting code
        target-i386: Fallback vcpu's TSC rate to value returned by KVM
        target-i386: Add suffixes to MMReg struct fields
        target-i386: Define MMREG_UNION macro
        target-i386: Define MMXReg._d field
        target-i386: Rename XMM_[BWLSDQ] helpers to ZMM_*
        target-i386: Rename struct XMMReg to ZMMReg
        target-i386: Use a _q array on MMXReg too
        target-i386/ops_sse.h: Use MMX_Q macro
        target-i386: Rename optimize_flags_init()
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      83446463
    • C
      c6b14aed
    • P
      Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20160121' into staging · 1a4f446f
      Peter Maydell 提交于
      target-arm queue:
       * connect SPI devices in Xilinx Zynq platforms
       * multiple-address-space support
       * use multiple-address-space support for ARM TrustZone
       * arm_gic: return correct ID registers for 11MPCore/v1/v2 GICs
       * various fixes for (currently disabled) AArch64 EL2 and EL3 support
       * add 'always-on' property to the virt board timer DT entry
      
      # gpg: Signature made Thu 21 Jan 2016 14:54:56 GMT using RSA key ID 14360CDE
      # 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>"
      
      * remotes/pmaydell/tags/pull-target-arm-20160121: (36 commits)
        target-arm: Implement FPEXC32_EL2 system register
        target-arm: ignore ELR_ELx[1] for exception return to 32-bit ARM mode
        target-arm: Implement remaining illegal return event checks
        target-arm: Handle exception return from AArch64 to non-EL0 AArch32
        target-arm: Fix wrong AArch64 entry offset for EL2/EL3 target
        target-arm: Pull semihosting handling out to arm_cpu_do_interrupt()
        target-arm: Use a single entry point for AArch64 and AArch32 exceptions
        target-arm: Move aarch64_cpu_do_interrupt() to helper.c
        target-arm: Properly support EL2 and EL3 in arm_el_is_aa64()
        arm_gic: Update ID registers based on revision
        hw/arm/virt: Add always-on property to the virt board timer
        hw/arm/virt: add secure memory region and UART
        hw/arm/virt: Wire up memory region to CPUs explicitly
        target-arm: Support multiple address spaces in page table walks
        target-arm: Implement cpu_get_phys_page_attrs_debug
        target-arm: Implement asidx_from_attrs
        target-arm: Add QOM property for Secure memory region
        qom/cpu: Add MemoryRegion property
        memory: Add address_space_init_shareable()
        exec.c: Use correct AddressSpace in watch_mem_read and watch_mem_write
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      1a4f446f
    • H
      target-i386: Add PKU and and OSPKE support · f74eefe0
      Huaitong Han 提交于
      Add PKU and OSPKE CPUID features, including xsave state and
      migration support.
      Signed-off-by: NHuaitong Han <huaitong.han@intel.com>
      Reviewed-by: NEduardo Habkost <ehabkost@redhat.com>
      [ehabkost: squashed 3 patches together, edited patch description]
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      f74eefe0
    • H
      target-i386: Add support to migrate vcpu's TSC rate · 36f96c4b
      Haozhong Zhang 提交于
      This patch enables migrating vcpu's TSC rate. If KVM on the
      destination machine supports TSC scaling, guest programs will
      observe a consistent TSC rate across the migration.
      
      If TSC scaling is not supported on the destination machine, the
      migration will not be aborted and QEMU on the destination will
      not set vcpu's TSC rate to the migrated value.
      
      If vcpu's TSC rate specified by CPU option 'tsc-freq' on the
      destination machine is inconsistent with the migrated TSC rate,
      the migration will be aborted.
      
      For backwards compatibility, the migration of vcpu's TSC rate is
      disabled on pc-*-2.5 and older machine types.
      Signed-off-by: NHaozhong Zhang <haozhong.zhang@intel.com>
      Reviewed-by: NEduardo Habkost <ehabkost@redhat.com>
      [ehabkost: Rewrote comment at kvm_arch_put_registers()]
      [ehabkost: Moved compat code to pc-2.5]
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      36f96c4b
    • H
      target-i386: Reorganize TSC rate setting code · 5031283d
      Haozhong Zhang 提交于
      Following changes are made to the TSC rate setting code in
      kvm_arch_init_vcpu():
       * The code is moved to a new function kvm_arch_set_tsc_khz().
       * If kvm_arch_set_tsc_khz() fails, i.e. following two conditions are
         both satisfied:
         * KVM does not support the TSC scaling or it fails to set vcpu's
           TSC rate by KVM_SET_TSC_KHZ,
         * the TSC rate to be set is different than the value currently used
           by KVM, then kvm_arch_init_vcpu() will fail. Prevously,
         * the lack of TSC scaling never failed kvm_arch_init_vcpu(),
         * the failure of KVM_SET_TSC_KHZ failed kvm_arch_init_vcpu()
           unconditionally, even though the TSC rate to be set is identical
           to the value currently used by KVM.
      Signed-off-by: NHaozhong Zhang <haozhong.zhang@intel.com>
      Reviewed-by: NEduardo Habkost <ehabkost@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      5031283d
    • H
      target-i386: Fallback vcpu's TSC rate to value returned by KVM · bcffbeeb
      Haozhong Zhang 提交于
      If no user-specified TSC rate is present, we will try to set
      env->tsc_khz to the value returned by KVM_GET_TSC_KHZ. This patch
      does not change the current functionality of QEMU and just
      prepares for later patches to enable migrating vcpu's TSC rate.
      Signed-off-by: NHaozhong Zhang <haozhong.zhang@intel.com>
      Reviewed-by: NEduardo Habkost <ehabkost@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      bcffbeeb