1. 06 4月, 2011 2 次提交
    • A
      KVM: move and fix substitue search for missing CPUID entries · bd22f5cf
      Andre Przywara 提交于
      If KVM cannot find an exact match for a requested CPUID leaf, the
      code will try to find the closest match instead of simply confessing
      it's failure.
      The implementation was meant to satisfy the CPUID specification, but
      did not properly check for extended and standard leaves and also
      didn't account for the index subleaf.
      Beside that this rule only applies to CPUID intercepts, which is not
      the only user of the kvm_find_cpuid_entry() function.
      
      So fix this algorithm and call it from kvm_emulate_cpuid().
      This fixes a crash of newer Linux kernels as KVM guests on
      AMD Bulldozer CPUs, where bogus values were returned in response to
      a CPUID intercept.
      Signed-off-by: NAndre Przywara <andre.przywara@amd.com>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      bd22f5cf
    • A
      KVM: fix XSAVE bit scanning · 20800bc9
      Andre Przywara 提交于
      When KVM scans the 0xD CPUID leaf for propagating the XSAVE save area
      leaves, it assumes that the leaves are contigious and stops at the
      first zero one. On AMD hardware there is a gap, though, as LWP uses
      leaf 62 to announce it's state save area.
      So lets iterate through all 64 possible leaves and simply skip zero
      ones to also cover later features.
      Signed-off-by: NAndre Przywara <andre.przywara@amd.com>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      20800bc9
  2. 01 4月, 2011 2 次提交
  3. 31 3月, 2011 1 次提交
  4. 30 3月, 2011 2 次提交
    • S
      x86, mtrr, pat: Fix one cpu getting out of sync during resume · 84ac7cdb
      Suresh Siddha 提交于
      On laptops with core i5/i7, there were reports that after resume
      graphics workloads were performing poorly on a specific AP, while
      the other cpu's were ok. This was observed on a 32bit kernel
      specifically.
      
      Debug showed that the PAT init was not happening on that AP
      during resume and hence it contributing to the poor workload
      performance on that cpu.
      
      On this system, resume flow looked like this:
      
      1. BP starts the resume sequence and we reinit BP's MTRR's/PAT
         early on using mtrr_bp_restore()
      
      2. Resume sequence brings all AP's online
      
      3. Resume sequence now kicks off the MTRR reinit on all the AP's.
      
      4. For some reason, between point 2 and 3, we moved from BP
         to one of the AP's. My guess is that printk() during resume
         sequence is contributing to this. We don't see similar
         behavior with the 64bit kernel but there is no guarantee that
         at this point the remaining resume sequence (after AP's bringup)
         has to happen on BP.
      
      5. set_mtrr() was assuming that we are still on BP and skipped the
         MTRR/PAT init on that cpu (because of 1 above)
      
      6. But we were on an AP and this led to not reprogramming PAT
         on this cpu leading to bad performance.
      
      Fix this by doing unconditional mtrr_if->set_all() in set_mtrr()
      during MTRR/PAT init. This might be unnecessary if we are still
      running on BP. But it is of no harm and will guarantee that after
      resume, all the cpu's will be in sync with respect to the
      MTRR/PAT registers.
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      LKML-Reference: <1301438292-28370-1-git-send-email-eric@anholt.net>
      Signed-off-by: NEric Anholt <eric@anholt.net>
      Tested-by: NKeith Packard <keithp@keithp.com>
      Cc: stable@kernel.org	[v2.6.32+]
      Signed-off-by: NH. Peter Anvin <hpa@linux.intel.com>
      84ac7cdb
    • T
      x86: apb_timer: Fixup genirq fallout · 86cc8dfc
      Thomas Gleixner 提交于
      The lonely user of the internal interface was not in the coccinelle
      script.
      Reported-by: NRandy Dunlap <rdunlap@xenotime.net>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      86cc8dfc
  5. 29 3月, 2011 3 次提交
    • R
      xen: fix p2m section mismatches · b83c6e55
      Randy Dunlap 提交于
      Fix section mismatch warnings:
      set_phys_range_identity() is called by __init xen_set_identity(),
      so also mark set_phys_range_identity() as __init.
      then:
      __early_alloc_p2m() is called set_phys_range_identity(), so also mark
      __early_alloc_p2m() as __init.
      
      WARNING: arch/x86/built-in.o(.text+0x7856): Section mismatch in reference from the function __early_alloc_p2m() to the function .init.text:extend_brk()
      The function __early_alloc_p2m() references
      the function __init extend_brk().
      This is often because __early_alloc_p2m lacks a __init
      annotation or the annotation of extend_brk is wrong.
      
      WARNING: arch/x86/built-in.o(.text+0x7967): Section mismatch in reference from the function set_phys_range_identity() to the function .init.text:extend_brk()
      The function set_phys_range_identity() references
      the function __init extend_brk().
      This is often because set_phys_range_identity lacks a __init
      annotation or the annotation of extend_brk is wrong.
      
      [v2: Per Stephen Hemming recommonedation made __early_alloc_p2m static]
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      b83c6e55
    • X
      x86, microcode: Unregister syscore_ops after microcode unloaded · 4ac5fc6a
      Xiaotian Feng 提交于
      Currently, microcode doesn't unregister syscore_ops after it's
      unloaded. So if we modprobe then rmmod microcode, the stale
      microcode syscore_ops info will stay on syscore_ops_list.
      
      Later when we're trying to reboot/halt/shutdown the machine, kernel
      will panic on syscore_shutdown().
      
      With the patch applied, I can reboot/halt/shutdown my machine successfully.
      Signed-off-by: NXiaotian Feng <dfeng@redhat.com>
      Cc: Tigran Aivazian <tigran@aivazian.fsnet.co.uk>
      Cc: Rafael J. Wysocki <rjw@sisk.pl>
      LKML-Reference: <1301387672-23661-1-git-send-email-dfeng@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      4ac5fc6a
    • J
      x86: Stop including <linux/delay.h> in two asm header files · ca444564
      Jean Delvare 提交于
      Stop including <linux/delay.h> in x86 header files which don't
      need it. This will let the compiler complain when this header is
      not included by source files when it should, so that
      contributors can fix the problem before building on other
      architectures starts to fail.
      
      Credits go to Geert for the idea.
      Signed-off-by: NJean Delvare <khali@linux-fr.org>
      Cc: James E.J. Bottomley <James.Bottomley@suse.de>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      LKML-Reference: <20110325152014.297890ec@endymion.delvare>
      [ this also fixes an upstream build bug in drivers/media/rc/ite-cir.c ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      ca444564
  6. 28 3月, 2011 1 次提交
  7. 27 3月, 2011 3 次提交
  8. 26 3月, 2011 1 次提交
  9. 25 3月, 2011 5 次提交
    • I
      perf, x86: Complain louder about BIOSen corrupting CPU/PMU state and continue · 45daae57
      Ingo Molnar 提交于
      Eric Dumazet reported that hardware PMU events do not work on his
      system, due to the BIOS corrupting PMU state:
      
          Performance Events: PEBS fmt0+, Core2 events, Broken BIOS detected, using software events only.
          [Firmware Bug]: the BIOS has corrupted hw-PMU resources (MSR 186 is 43003c)
      
      Linus suggested that we continue in the face of such BIOS-induced CPU
      state corruption:
      
         http://lkml.org/lkml/2011/3/24/608
      
      Such BIOSes will have to be fixed - Linux developers rely on a working and
      fully capable PMU and the BIOS interfering with the CPU's PMU state is simply
      not acceptable.
      
      So this patch changes perf to continue when it detects such BIOS
      interaction, some hardware events may be unreliable due to the BIOS
      writing and re-writing them - there's not much the kernel can do
      about that but to detect the corruption and report it.
      Reported-and-tested-by: NEric Dumazet <eric.dumazet@gmail.com>
      Suggested-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Acked-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      LKML-Reference: <new-submission>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      45daae57
    • T
      x86: DT: Cleanup namespace and call irq_set_irq_type() unconditional · 07611dbd
      Thomas Gleixner 提交于
      That call escaped the name space cleanup. Fix it up.
      
      We really want to call there. The chip might have changed since the
      irq was setup initially. So let the core code and the chip decide what
      to do. The status is just an unreliable snapshot.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
      07611dbd
    • T
      x86: DT: Fix return condition in irq_create_of_mapping() · 00a30b25
      Thomas Gleixner 提交于
      The xlate() function returns 0 or a negative error code. Returning the
      error code blindly will be seen as an huge irq number by the calling
      function because irq_create_of_mapping() returns an unsigned value.
      
      Return 0 (NO_IRQ) as required.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
      00a30b25
    • D
      perf, x86: P4 PMU - Read proper MSR register to catch unflagged overflows · 242214f9
      Don Zickus 提交于
      The read of a proper MSR register was missed and instead of
      counter the configration register was tested (it has
      ARCH_P4_UNFLAGGED_BIT always cleared) leading to unknown NMI
      hitting the system. As result the user may obtain "Dazed and
      confused, but trying to continue" message. Fix it by reading a
      proper MSR register.
      
      When an NMI happens on a P4, the perf nmi handler checks the
      configuration register to see if the overflow bit is set or not
      before taking appropriate action.  Unfortunately, various P4
      machines had a broken overflow bit, so a backup mechanism was
      implemented.  This mechanism checked to see if the counter
      rolled over or not.
      
      A previous commit that implemented this backup mechanism was
      broken. Instead of reading the counter register, it used the
      configuration register to determine if the counter rolled over
      or not. Reading that bit would give incorrect results.
      
      This would lead to 'Dazed and confused' messages for the end
      user when using the perf tool (or if the nmi watchdog is
      running).
      
      The fix is to read the counter register before determining if
      the counter rolled over or not.
      Signed-off-by: NDon Zickus <dzickus@redhat.com>
      Signed-off-by: NCyrill Gorcunov <gorcunov@openvz.org>
      Cc: Lin Ming <ming.m.lin@intel.com>
      LKML-Reference: <4D8BAB49.3080701@openvz.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      242214f9
    • A
      oprofile, x86: Allow setting EDGE/INV/CMASK for counter events · 914a76ca
      Andi Kleen 提交于
      For some performance events it's useful to set the EDGE and INV
      bits and the CMASK mask in the counter control register. The list
      of predefined events Intel releases for each CPU has some events which
      require these settings to get more "natural" to use higher level events.
      
      oprofile currently doesn't allow this.
      
      This patch adds new extra configuration fields for them, so that
      they can be specified in oprofilefs.
      
      An updated oprofile daemon can then make use of this to set them.
      
      v2: Write back masked extra value to variable.
      Signed-off-by: NAndi Kleen <ak@linux.intel.com>
      Signed-off-by: NRobert Richter <robert.richter@amd.com>
      914a76ca
  10. 24 3月, 2011 15 次提交
  11. 23 3月, 2011 5 次提交