1. 16 6月, 2018 1 次提交
    • E
      qht: require a default comparison function · 61b8cef1
      Emilio G. Cota 提交于
      qht_lookup now uses the default cmp function. qht_lookup_custom is defined
      to retain the old behaviour, that is a cmp function is explicitly provided.
      
      qht_insert will gain use of the default cmp in the next patch.
      
      Note that we move qht_lookup_custom's @func to be the last argument,
      which makes the new qht_lookup as simple as possible.
      Instead of this (i.e. keeping @func 2nd):
      0000000000010750 <qht_lookup>:
         10750:       89 d1                   mov    %edx,%ecx
         10752:       48 89 f2                mov    %rsi,%rdx
         10755:       48 8b 77 08             mov    0x8(%rdi),%rsi
         10759:       e9 22 ff ff ff          jmpq   10680 <qht_lookup_custom>
         1075e:       66 90                   xchg   %ax,%ax
      
      We get:
      0000000000010740 <qht_lookup>:
         10740:       48 8b 4f 08             mov    0x8(%rdi),%rcx
         10744:       e9 37 ff ff ff          jmpq   10680 <qht_lookup_custom>
         10749:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Signed-off-by: NRichard Henderson <richard.henderson@linaro.org>
      61b8cef1
  2. 07 10月, 2016 1 次提交
    • E
      test-qht: perform lookups under rcu_read_lock · 9c7d64eb
      Emilio G. Cota 提交于
      qht_lookup is meant to be called from an RCU read-critical
      section. Make sure we're in such a section in test-qht
      when performing lookups, despite the fact that no races
      in qht can be triggered by test-qht since it is single-threaded.
      
      Note that rcu_register_thread is already called by the
      rcu_after_fork hook, and therefore duplicating it here would
      be a bug.
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1475706880-10667-4-git-send-email-cota@braap.org>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      9c7d64eb
  3. 02 8月, 2016 1 次提交
    • E
      qht: do not segfault when gathering stats from an uninitialized qht · 7266ae91
      Emilio G. Cota 提交于
      So far, QHT functions assume that the passed qht has previously been
      initialized--otherwise they segfault.
      
      This patch makes an exception for qht_statistics_init, with the goal
      of simplifying calling code. For instance, qht_statistics_init is
      called from the 'info jit' dump, and given that under KVM the TB qht
      is never initialized, we get a segfault. Thus, instead of complicating
      the 'info jit' code with additional checks, let's allow passing an
      uninitialized qht to qht_statistics_init.
      
      While at it, add a test for this to test-qht.
      
      Before the patch (for $ qemu -enable-kvm [...]):
      (qemu) info jit
      [...]
      direct jump count   0 (0%) (2 jumps=0 0%)
      Program received signal SIGSEGV, Segmentation fault.
      
      After the patch the "TB hash buckets", "TB hash occupancy"
      and "TB hash avg chain" lines are omitted.
      (qemu) info jit
      [...]
      direct jump count   0 (0%) (2 jumps=0 0%)
      TB hash buckets     0/0 (-nan% head buckets used)
      TB hash occupancy   nan% avg chain occ. Histogram: (null)
      TB hash avg chain   nan buckets. Histogram: (null)
      [...]
      
      Reported by: Changlong Xie <xiecl.fnst@cn.fujitsu.com>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1469205390-14369-1-git-send-email-cota@braap.org>
      [Extract printing statistics to an entirely separate function. - Paolo]
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      7266ae91
  4. 17 6月, 2016 1 次提交
  5. 12 6月, 2016 1 次提交