1. 06 6月, 2017 40 次提交
    • P
      Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.10-20170606' into staging · e02bbe19
      Peter Maydell 提交于
      ppc patch queue 2017-06-06
      
      Accumulated patches for ppc targets and the pseries machine type.
      
      The big thing in this batch is a start on a substantial cleanup of the
      pseries hotplug mechanisms, which were pretty confusing.  For now
      these shouldn't cause substantial behavioural changes, but I am hoping
      these lead to clearer code and eventually to fixes for the bugs we
      have in hotplug handling, particularly when hotplug and migration are
      combined.
      
      The remaining patches are mostly bugfixes.
      
      # gpg: Signature made Tue 06 Jun 2017 03:48:50 BST
      # gpg:                using RSA key 0x6C38CACA20D9B392
      # 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:                 aka "David Gibson (kernel.org) <dwg@kernel.org>"
      # Primary key fingerprint: 75F4 6586 AE61 A66C C44E  87DC 6C38 CACA 20D9 B392
      
      * remotes/dgibson/tags/ppc-for-2.10-20170606:
        spapr: Remove some non-useful properties on DRC objects
        spapr: Eliminate spapr_drc_get_type_str()
        spapr: Move configure-connector state into DRC
        spapr: Clean up spapr_dr_connector_by_*()
        spapr: Introduce DRC subclasses
        spapr/drc: don't migrate DRC of cold-plugged CPUs and LMBs
        spapr: Allow boot from vhost-*-scsi backends
        ppc/pnv: check the return value of fdt_setprop()
        spapr_nvram: Check return value from blk_getlength()
        target/ppc: Fixup set_spr error in h_register_process_table
        target-ppc: Fix openpic timer read register offset
        spapr: Make DRC get_index and get_type methods into plain functions
        spapr: Abolish DRC set_configured method
        spapr: Abolish DRC get_fdt method
        spapr: Move DRC RTAS calls into spapr_drc.c
        migration: Mark CPU states dirty before incoming migration/loadvm
        migration: remove register_savevm()
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      e02bbe19
    • P
      Merge remote-tracking branch 'remotes/ehabkost/tags/x86-and-machine-pull-request' into staging · a65afaae
      Peter Maydell 提交于
      x86 and machine queue, 2017-06-05
      
      # gpg: Signature made Mon 05 Jun 2017 19:58:01 BST
      # gpg:                using RSA key 0x2807936F984DC5A6
      # gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>"
      # Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF  D1AA 2807 936F 984D C5A6
      
      * remotes/ehabkost/tags/x86-and-machine-pull-request:
        scripts: Test script to look for -device crashes
        qemu.py: Add QEMUMachine.exitcode() method
        qemu.py: Don't set _popen=None on error/shutdown
        spapr: cleanup spapr_fixup_cpu_numa_dt() usage
        numa: move numa_node from CPUState into target specific classes
        numa: make hmp 'info numa' fetch numa nodes from qmp_query_cpus() result
        numa: make sure that all cpus have has_node_id set if numa is enabled
        numa: move default mapping init to machine
        numa: consolidate cpu_preplug fixups/checks for pc/arm/spapr
        pc: Use "min-[x]level" on compat_props
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      a65afaae
    • D
      spapr: Remove some non-useful properties on DRC objects · 91dcb1ff
      David Gibson 提交于
       * 'connector_type' is easily derived from the 'index' property, so there's
         no point to it (it's also implicit in the QOM type of the DRC)
       * 'isolation-state', 'indicator-state' and 'allocation-state' are
         part of the transaction between qemu and guest during PAPR hotplug
         operations, and outside tools really have no business looking at it
         (especially not changing, and these were RW properties)
       * 'entity-sense' is basically just a weird PAPR encoding of whether there
         is a device connected to this DRC
      
      Strictly speaking removing these properties is breaking the qemu interface.
      However, I'm pretty sure no management tools have ever used these.  For
      debugging there are better alternatives.  Therefore, I think removing these
      broken interfaces is the better option.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      Acked-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      91dcb1ff
    • D
      spapr: Eliminate spapr_drc_get_type_str() · 1693ea16
      David Gibson 提交于
      This function was used in generating the device tree.  However, now that
      we have different QOM types for different DRC types we can easily store
      the information we need in the class structure and avoid this specialized
      lookup function.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      Acked-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      1693ea16
    • D
      spapr: Move configure-connector state into DRC · b8fdd530
      David Gibson 提交于
      Currently the sPAPRMachineState contains a list of sPAPRConfigureConnector
      structures which store intermediate state for the ibm,configure-connector
      RTAS call.
      
      This was an attempt to separate this state from the core of the DRC state.
      However the configure connector process is intimately tied to the DRC
      model, so there's really no point trying to have two levels of interface
      here.
      
      Moving the configure-connector state into its corresponding DRC allows
      removal of a number of helpers for maintaining the anciliary list.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      Acked-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      b8fdd530
    • D
      spapr: Clean up spapr_dr_connector_by_*() · fbf55397
      David Gibson 提交于
       * Change names to something less ludicrously verbose
       * Now that we have QOM subclasses for the different DRC types, use a QOM
         typename instead of a PAPR type value parameter
      
      The latter allows removal of the get_type_shift() helper.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      Acked-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      fbf55397
    • D
      spapr: Introduce DRC subclasses · 2d335818
      David Gibson 提交于
      Currently we only have a single QOM type for all DRCs, but lots of
      places where we switch behaviour based on the DRC's PAPR defined type.
      This is a poor use of our existing type system.
      
      So, instead create QOM subclasses for each PAPR defined DRC type.  We
      also introduce intermediate subclasses for physical and logical DRCs,
      a division which will be useful later on.
      
      Instead of being stored in the DRC object itself, the PAPR type is now
      stored in the class structure.  There are still many places where we
      switch directly on the PAPR type value, but this at least provides the
      basis to start to remove those.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      Acked-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      2d335818
    • G
      spapr/drc: don't migrate DRC of cold-plugged CPUs and LMBs · a32e900b
      Greg Kurz 提交于
      As explained in commit 5c0139a8 ("spapr: fix default DRC state for
      coldplugged LMBs"), guests expect cold-plugged LMBs to be pre-allocated
      and unisolated. The same goes for cold-plugged CPUs.
      
      While here, let's convert g_assert(false) to the better self documenting
      g_assert_not_reached().
      Signed-off-by: NGreg Kurz <groug@kaod.org>
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      a32e900b
    • F
      spapr: Allow boot from vhost-*-scsi backends · c4e13492
      Felipe Franciosi 提交于
      The current implementation of spapr_get_fw_dev_path() doesn't take into
      consideration vhost-*-scsi devices. This makes said devices unbootable
      on PPC as SLOF is unable to work out the path to scan boot disks.
      
      This makes VMs bootable on spapr when using vhost-*-scsi by implementing
      a disk path for VHostSCSICommon (which currently includes both
      vhost-user-scsi and vhost-scsi).
      Signed-off-by: NFelipe Franciosi <felipe@nutanix.com>
      Signed-off-by: NMike Cui <cui@nutanix.com>
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      c4e13492
    • C
      ppc/pnv: check the return value of fdt_setprop() · 7032d92a
      Cédric Le Goater 提交于
      Signed-off-by: NCédric Le Goater <clg@kaod.org>
      [dwg: Correct typo in commit message]
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      7032d92a
    • P
      spapr_nvram: Check return value from blk_getlength() · 05249517
      Peter Maydell 提交于
      The blk_getlength() function can return an error value if the
      image size cannot be determined. Check for this rather than
      ploughing on and trying to g_malloc0() a negative number.
      (Spotted by Coverity, CID 1288484.)
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      05249517
    • S
      target/ppc: Fixup set_spr error in h_register_process_table · 60694bc6
      Suraj Jitindar Singh 提交于
      set_spr is used in the function h_register_process_table() to update the
      LPCR_GTSE and LPCR_UPRT values based on the flags passed by the guest.
      The set_spr function takes the last two arguments mask and value used to
      mask and set the value of the spr respectively.
      
      The current call site passes these arguments in the wrong order and thus
      bot GTSE and UPRT will be set irrespective, which is obviously
      incorrect.
      
      Rearrange the function call so that these arguments are passed in the
      correct order and the correct behaviour is exhibited.
      
      It is worth noting that this wasn't detected earlier since these were
      always both set in all cases where this H_CALL was made.
      
      Fixes: 6de83307 ("target/ppc: Set UPRT and GTSE on all cpus in H_REGISTER_PROCESS_TABLE")
      Signed-off-by: NSuraj Jitindar Singh <sjitindarsingh@gmail.com>
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      60694bc6
    • A
      target-ppc: Fix openpic timer read register offset · a09f7443
      Aaron Larson 提交于
      openpic_tmr_read() is incorrectly computing register offset of the
      TCCR, TBCR, TVPR, and TDR registers when accessing the open pic timer
      registers.  Specifically the offset of timer registers for
      openpic_tmr_read() is not accounting for the timer frequency reporting
      register (TFFR) which is the first register in the "tmr" memory
      region.
      
      openpic_tmr_write() *is* correctly computing the offset by adding
      0x10f0 to the address prior to computing the register index.  This
      patch instead subtracts 0x10 in both the read and write routines and
      eliminates some other gratuitous differences between the functions.
      Signed-off-by: NAaron Larson <alarson@ddci.com>
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      a09f7443
    • D
      spapr: Make DRC get_index and get_type methods into plain functions · 0b55aa91
      David Gibson 提交于
      These two methods only have one implementation, and the spec they're
      implementing means any other implementation is unlikely, verging on
      impossible.
      
      So replace them with simple functions.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: NLaurent Vivier <lvivier@redhat.com>
      Tested-by: NDaniel Barboza <danielhb@linux.vnet.ibm.com>
      0b55aa91
    • D
      spapr: Abolish DRC set_configured method · 4f65ce00
      David Gibson 提交于
      DRConnectorClass has a set_configured method, however:
        * There is only one implementation, and only ever likely to be one
        * There's exactly one caller, and that's (now) local
        * The implementation is very straightforward
      
      So abolish the method entirely, and just open-code what we need.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: NLaurent Vivier <lvivier@redhat.com>
      Reviewed-by: NGreg Kurz <groug@kaod.org>
      Tested-by: NDaniel Barboza <danielhb@linux.vnet.ibm.com>
      4f65ce00
    • D
      spapr: Abolish DRC get_fdt method · 88af6ea5
      David Gibson 提交于
      The DRConnectorClass includes a get_fdt method.  However
        * There's only one implementation, and there's only likely to ever be one
        * Both callers are local to spapr_drc
        * Each caller only uses one half of the actual implementation
      
      So abolish get_fdt() entirely, and just open-code what we need.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: NLaurent Vivier <lvivier@redhat.com>
      Reviewed-by: NGreg Kurz <groug@kaod.org>
      Tested-by: NDaniel Barboza <danielhb@linux.vnet.ibm.com>
      88af6ea5
    • D
      spapr: Move DRC RTAS calls into spapr_drc.c · b89b3d39
      David Gibson 提交于
      Currently implementations of the RTAS calls related to DRCs are in
      spapr_rtas.c.  They belong better in spapr_drc.c - that way they're closer
      to related code, and we'll be able to make some more things local.
      
      spapr_rtas.c was intended to contain the RTAS infrastructure and core calls
      that don't belong anywhere else, not every RTAS implementation.
      
      Code motion only.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: NGreg Kurz <groug@kaod.org>
      Tested-by: NDaniel Barboza <danielhb@linux.vnet.ibm.com>
      b89b3d39
    • D
      migration: Mark CPU states dirty before incoming migration/loadvm · 75e972da
      David Gibson 提交于
      As a rule, CPU internal state should never be updated when
      !cpu->kvm_vcpu_dirty (or the HAX equivalent).  If that is done, then
      subsequent calls to cpu_synchronize_state() - usually safe and idempotent -
      will clobber state.
      
      However, we routinely do this during a loadvm or incoming migration.
      Usually this is called shortly after a reset, which will clear all the cpu
      dirty flags with cpu_synchronize_all_post_reset().  Nothing is expected
      to set the dirty flags again before the cpu state is loaded from the
      incoming stream.
      
      This means that it isn't safe to call cpu_synchronize_state() from a
      post_load handler, which is non-obvious and potentially inconvenient.
      
      We could cpu_synchronize_all_state() before the loadvm, but that would be
      overkill since a) we expect the state to already be synchronized from the
      reset and b) we expect to completely rewrite the state with a call to
      cpu_synchronize_all_post_init() at the end of qemu_loadvm_state().
      
      To clear this up, this patch introduces cpu_synchronize_pre_loadvm() and
      associated helpers, which simply marks the cpu state as dirty without
      actually changing anything.  i.e. it says we want to discard any existing
      KVM (or HAX) state and replace it with what we're going to load.
      
      Cc: Juan Quintela <quintela@redhat.com>
      Cc: Dave Gilbert <dgilbert@redhat.com>
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      75e972da
    • L
      migration: remove register_savevm() · 1b6e7482
      Laurent Vivier 提交于
      We can replace the four remaining calls of register_savevm() by
      calls to register_savevm_live(). So we can remove the function and
      as we don't allocate anymore the ops pointer with g_new0()
      we don't have to free it then.
      Signed-off-by: NLaurent Vivier <lvivier@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      1b6e7482
    • E
      scripts: Test script to look for -device crashes · 23ea4f30
      Eduardo Habkost 提交于
      Test code to check if we can crash QEMU using -device. It will
      test all accel/machine/device combinations by default, which may
      take a few hours (it's more than 90k test cases). There's a "-r"
      option that makes it test a random sample of combinations.
      
      The scripts contains a whitelist for: 1) known error messages
      that make QEMU exit cleanly; 2) known QEMU crashes.
      
      This is the behavior when the script finds a failure:
      
      * Known clean (exitcode=1) errors generate DEBUG messages
        (hidden by default)
      * Unknown clean (exitcode=1) errors will generate INFO messages
        (visible by default)
      * Known crashes generate error messages, but are not fatal
        (unless --strict mode is used)
      * Unknown crashes generate fatal error messages
      
      Having an updated whitelist of known clean errors is useful to make the
      script less verbose and run faster when in --quick mode, but the
      whitelist doesn't need to be always up to date.
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20170526181200.17227-4-ehabkost@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      23ea4f30
    • E
      qemu.py: Add QEMUMachine.exitcode() method · b2b8d986
      Eduardo Habkost 提交于
      Allow the exit code of QEMU to be queried by scripts.
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20170526181200.17227-3-ehabkost@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      b2b8d986
    • E
      qemu.py: Don't set _popen=None on error/shutdown · 37bbcd57
      Eduardo Habkost 提交于
      Keep the Popen object around to we can query its exit code later.
      
      To keep the existing 'self._popen is None' checks working, add a
      is_running() method, that will check if the process is still running.
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20170526181200.17227-2-ehabkost@redhat.com>
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      37bbcd57
    • I
      spapr: cleanup spapr_fixup_cpu_numa_dt() usage · 99861ecb
      Igor Mammedov 提交于
      even though spapr_fixup_cpu_numa_dt() has no effect on FDT
      if numa is disabled, don't call it uselessly. It makes it
      obvious at call sites that function is needed only when numa
      is enabled.
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Message-Id: <1496161442-96665-7-git-send-email-imammedo@redhat.com>
      Reviewed-by: NGreg Kurz <groug@kaod.org>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      99861ecb
    • I
      numa: move numa_node from CPUState into target specific classes · 15f8b142
      Igor Mammedov 提交于
      Move vcpu's associated numa_node field out of generic CPUState
      into inherited classes that actually care about cpu<->numa mapping,
      i.e: ARMCPU, PowerPCCPU, X86CPU.
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Message-Id: <1496161442-96665-6-git-send-email-imammedo@redhat.com>
      [ehabkost: s/CPU is belonging to/CPU belongs to/ on comments]
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      15f8b142
    • I
      numa: make hmp 'info numa' fetch numa nodes from qmp_query_cpus() result · f75cd44d
      Igor Mammedov 提交于
      HMP command 'info numa' is the last external user that access
      CPUState::numa_node field directly. In order to move it to CPU
      classes that actually use it, eliminate direct access and use
      an alternative approach by using result of qmp_query_cpus(),
      which provides topology properties CPU threads are associated
      with (including node-id).
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Message-Id: <1496161442-96665-5-git-send-email-imammedo@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      f75cd44d
    • I
      numa: make sure that all cpus have has_node_id set if numa is enabled · d41f3e75
      Igor Mammedov 提交于
      It fixes/add missing _PXM object for non mapped CPU (x86)
      and missing fdt node (virt-arm).
      
      It ensures that possible_cpus contains complete mapping if
      numa is enabled by the time machine_init() is executed.
      
      As result non completely mapped CPUs:
       1) appear in ACPI/fdt blobs
       2) QMP query-hotpluggable-cpus command shows bound nodes for such CPUs
       3) allows to drop checks for has_node_id in numa only code,
         reducing number of invariants incomplete mapping could produce
       4) moves fixup/implicit node init from runtime numa_cpu_pre_plug()
         (when CPU object is created) to machine_numa_finish_init() which
         helps to fix [1, 2] and make possible_cpus complete source
         of numa mapping available even before CPUs are created.
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Message-Id: <1496161442-96665-4-git-send-email-imammedo@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      d41f3e75
    • I
      numa: move default mapping init to machine · 60bed6a3
      Igor Mammedov 提交于
      there is no need use cpu_index_to_instance_props() for setting
      default cpu -> node mapping. Generic machine code can do it
      without cpu_index by just enabling already preset defaults
      in possible_cpus.
      
      PS:
      as bonus it makes one less user of cpu_index_to_instance_props()
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Message-Id: <1496161442-96665-3-git-send-email-imammedo@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      60bed6a3
    • I
      numa: consolidate cpu_preplug fixups/checks for pc/arm/spapr · a0ceb640
      Igor Mammedov 提交于
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Reviewed-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Message-Id: <1496161442-96665-2-git-send-email-imammedo@redhat.com>
      [ehabkost: Fix indentation]
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      a0ceb640
    • E
      pc: Use "min-[x]level" on compat_props · 1f435716
      Eduardo Habkost 提交于
      Since the automatic cpuid-level code was introduced in commit
      c39c0edf ("target-i386: Automatically
      set level/xlevel/xlevel2 when needed"), the CPU model tables just define
      the default CPUID level code (set using "min-level").  Setting
      "[x]level" forces CPUID level to a specific value and disable the
      automatic-level logic.
      
      But the PC compat code was not updated and the existing "[x]level"
      compat properties broke compatibility for people using features that
      triggered the auto-level code.  To keep previous behavior, we should set
      "min-[x]level" instead of "[x]level" on compat_props.
      
      This was not a problem for most cases, because old machine-types don't
      have full-cpuid-auto-level enabled.  The only common use case it broke
      was the CPUID[7] auto-level code, that was already enabled since the
      first CPUID[7] feature was introduced (in QEMU 1.4.0).
      
      This causes the regression reported at:
      https://bugzilla.redhat.com/show_bug.cgi?id=1454641
      
      Change the PC compat code to use "min-[x]level" instead of "[x]level" on
      compat_props, and add new test cases to ensure we don't break this
      again.
      Reported-by: N"Guo, Zhiyi" <zhguo@redhat.com>
      Fixes: c39c0edf ("target-i386: Automatically set level/xlevel/xlevel2 when needed")
      Cc: qemu-stable@nongnu.org
      Acked-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      1f435716
    • P
      Merge remote-tracking branch 'remotes/rth/tags/pull-tcg-20170605' into staging · a0d4aac7
      Peter Maydell 提交于
      Queued TCG patches
      
      # gpg: Signature made Mon 05 Jun 2017 17:48:42 BST
      # gpg:                using RSA key 0xAD1270CC4DD0279B
      # gpg: Good signature from "Richard Henderson <rth7680@gmail.com>"
      # gpg:                 aka "Richard Henderson <rth@redhat.com>"
      # gpg:                 aka "Richard Henderson <rth@twiddle.net>"
      # Primary key fingerprint: 9CB1 8DDA F8E8 49AD 2AFC  16A4 AD12 70CC 4DD0 279B
      
      * remotes/rth/tags/pull-tcg-20170605: (26 commits)
        target/alpha: Use goto_tb for fallthru between TBs
        target/alpha: Implement WTINT inline
        target/mips: optimize indirect branches
        target/mips: optimize cross-page direct jumps in softmmu
        target/aarch64: optimize indirect branches
        target/aarch64: optimize cross-page direct jumps in softmmu
        target/hppa: Use tcg_gen_lookup_and_goto_ptr
        target/s390: Use tcg_gen_lookup_and_goto_ptr
        tcg/mips: implement goto_ptr
        tcg/arm: Implement goto_ptr
        tcg/arm: Clarify tcg_out_bx for arm4 host
        tcg/s390: Implement goto_ptr
        tcg/sparc: Implement goto_ptr
        tcg/aarch64: Implement goto_ptr
        tcg/ppc: Implement goto_ptr
        tb-hash: improve tb_jmp_cache hash function in user mode
        target/i386: optimize indirect branches
        target/i386: optimize cross-page direct jumps in softmmu
        target/i386: introduce gen_jr helper to generate lookup_and_goto_ptr
        target/arm: optimize indirect branches
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      a0d4aac7
    • R
      2d826cdc
    • R
      target/alpha: Implement WTINT inline · bec5e2b9
      Richard Henderson 提交于
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      bec5e2b9
    • A
      target/mips: optimize indirect branches · e350d8ca
      Aurelien Jarno 提交于
      Cc: Yongbok Kim <yongbok.kim@imgtec.com>
      Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
      Message-Id: <20170430145254.25616-4-aurelien@aurel32.net>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      e350d8ca
    • A
      target/mips: optimize cross-page direct jumps in softmmu · d9a9acde
      Aurelien Jarno 提交于
      Cc: Yongbok Kim <yongbok.kim@imgtec.com>
      Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
      Message-Id: <20170430145254.25616-3-aurelien@aurel32.net>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      d9a9acde
    • E
      target/aarch64: optimize indirect branches · e75449a3
      Emilio G. Cota 提交于
      Measurements:
      
      [Baseline performance is that before applying this and the previous commit]
      
      -                                    NBench, aarch64-softmmu. Host: Intel i7-4790K @ 4.00GHz
      
       1.7x +-+--------------------------------------------------------------------------------------------------------------+-+
            |                                                                                                                  |
            |   cross                                                                                                          |
       1.6x +cross+jr.................................................####...................................................+-+
            |                                                         #++#                                                     |
            |                                                         #  #                                                     |
       1.5x +-+...................................................*****..#...................................................+-+
            |                                                     *+++*  #                                                     |
            |                                                     *   *  #                                                     |
       1.4x +-+...................................................*...*..#...................................................+-+
            |                                                     *   *  #                                                     |
            |                                     #####           *   *  #                                                     |
       1.3x +-+................................****+++#...........*...*..#...................................................+-+
            |                                  *++*   #           *   *  #                                                     |
            |                                  *  *   #           *   *  #                                                     |
       1.2x +-+................................*..*...#...........*...*..#...................................................+-+
            |                                  *  *   #           *   *  #                                                     |
            |                            ####  *  *   #           *   *  #                                                     |
       1.1x +-+.......................+++#..#..*..*...#...........*...*..#...................................................+-+
            |                         ****  #  *  *   #           *   *  #                                        ****####     |
            |                         *  *  #  *  *   #           *   *  #  ****###   +++####            ****###  *  *   #     |
         1x +-++-++++++-++++****###++-*++*++#++*++*+-+#++****+++++*+++*++#++*++*-+#++*****++#++****###-++*++*-+#++*+-*+++#+-++-+
            |     *****###  *  *  #   *  *  #  *  *   #  *++*###  *   *  #  *  *  #  *   *  #  *  *++#   *  *  #  *  *   #     |
            |     *   *++#  *  *  #   *  *  #  *  *   #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #   *  *  #  *  *   #     |
       0.9x +-+---*****###--****###---****###--****####--****###--*****###--****###--*****###--****###---****###--****####---+-+
            ASSIGNMENT BITFIELD   FOURFP EMULATION   HUFFMAN   LU DECOMPOSITIONNEURAL NUMERIC SORSTRING SORT    hmean
        png: http://imgur.com/qO9ubtk
      NB. cross here represents the previous commit.
      
      -                            SPECint06 (test set), aarch64-linux-user. Host: Intel i7-4790K @ 4.00GHz
      
       1.5x +-+--------------------------------------------------------------------------------------------------------------+-+
            |                                                                       *****                                      |
            |                                                                       *+++*                           jr         |
            |                                                                       *   *                                      |
       1.4x +-+.....................................................................*...*.....................+++............+-+
            |                                                                       *   *                      |               |
            |                                      *****                            *   *                      |               |
            |                                      *   *                            *   *                    *****             |
       1.3x +-+....................................*...*............................*...*....................*.|.*...........+-+
            |                       +++            *   *                            *   *                    * | *             |
            |                      *****           *   *                            *   *                    *+++*             |
            |                      *   *           *   *                            *   *                    *   *             |
       1.2x +-+....................*...*...........*...*............................*...*...........*****....*...*...........+-+
            |     *****            *   *           *   *                            *   *           *   *    *   *    +++      |
            |     *   *            *   *           *   *                            *   *           *   *    *   *   *****     |
            |     *   *            *   *   *****   *   *                            *   *           *   *    *   *   *   *     |
       1.1x +-+...*...*............*...*...*...*...*...*............................*...*....+++....*...*....*...*...*...*...+-+
            |     *   *            *   *   *   *   *   *                            *   *   *****   *   *    *   *   *   *     |
            |     *   *            *   *   *   *   *   *   *****                    *   *   *   *   *   *    *   *   *   *     |
            |     *   *   *****    *   *   *   *   *   *   *   *   ******           *   *   *   *   *   *    *   *   *   *     |
         1x +-++-+*+++*-++*+++*++++*+-+*+++*-++*+++*-++*+++*+++*++-*++++*-++*****+++*++-*+++*++-*+++*+-+*++++*+++*++-*+++*+-++-+
            |     *   *   *   *    *   *   *   *   *   *   *   *   *    *   *+++*   *   *   *   *   *   *    *   *   *   *     |
            |     *   *   *   *    *   *   *   *   *   *   *   *   *    *   *   *   *   *   *   *   *   *    *   *   *   *     |
            |     *   *   *   *    *   *   *   *   *   *   *   *   *    *   *   *   *   *   *   *   *   *    *   *   *   *     |
       0.9x +-+---*****---*****----*****---*****---*****---*****---******---*****---*****---*****---*****----*****---*****---+-+
               astar   bzip2      gcc   gobmk h264ref   hmmlibquantum      mcf omnetpperlbench   sjengxalancbmk   hmean
        png: http://imgur.com/3Dp4vvq
      
      -                           SPECint06 (train set), aarch64-linux-user. Host: Intel i7-4790K @ 4.00GHz
      
       1.7x +-+--------------------------------------------------------------------------------------------------------------+-+
            |                                                                                                                  |
            |                                                                                                       jr         |
       1.6x +-+...............................................................................................+++............+-+
            |                                                                                                *****             |
            |                                                                                                *+++*             |
            |                                                                                                *   *             |
       1.5x +-+..............................................................................................*...*...........+-+
            |                                                                        +++                     *   *             |
            |                                                                       *****                    *   *             |
       1.4x +-+.....................................................................*+++*....................*...*...........+-+
            |                                                                       *   *                    *   *             |
            |                                      *****                            *   *                    *   *             |
            |                                      *   *                            *   *   *****            *   *             |
       1.3x +-+....................................*...*............................*...*...*...*............*...*...........+-+
            |                       +++            *   *                            *   *   *   *            *   *             |
            |                      *****           *   *                            *   *   *   *   *****    *   *             |
       1.2x +-+....................*...*...........*...*............................*...*...*...*...*+++*....*...*...*****...+-+
            |                      *   *           *   *                            *   *   *   *   *   *    *   *   *+++*     |
            |     *****            *   *   *****   *   *                            *   *   *   *   *   *    *   *   *   *     |
            |     *   *            *   *   *+++*   *   *                            *   *   *   *   *   *    *   *   *   *     |
       1.1x +-+...*...*............*...*...*...*...*...*............................*...*...*...*...*...*....*...*...*...*...+-+
            |     *   *   *****    *   *   *   *   *   *                    *****   *   *   *   *   *   *    *   *   *   *     |
            |     *   *   *   *    *   *   *   *   *   *    +++    ******   *+++*   *   *   *   *   *   *    *   *   *   *     |
         1x +-+---*****---*****----*****---*****---*****---*****---******---*****---*****---*****---*****----*****---*****---+-+
               astar   bzip2      gcc   gobmk h264ref   hmmlibquantum      mcf omnetpperlbench   sjengxalancbmk   hmean
        png: http://imgur.com/vRrdc9jSigned-off-by: NEmilio G. Cota <cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      e75449a3
    • E
      target/aarch64: optimize cross-page direct jumps in softmmu · e7872236
      Emilio G. Cota 提交于
      Perf numbers in next commit's log.
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      e7872236
    • R
      4137cb83
    • R
    • A
      tcg/mips: implement goto_ptr · 5786e068
      Aurelien Jarno 提交于
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
      Message-Id: <20170430145254.25616-2-aurelien@aurel32.net>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      5786e068
    • R
      tcg/arm: Implement goto_ptr · 085c648b
      Richard Henderson 提交于
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      085c648b