1. 07 12月, 2011 2 次提交
  2. 06 12月, 2011 3 次提交
    • P
      perf, x86: Prefer fixed-purpose counters when scheduling · 4defea85
      Peter Zijlstra 提交于
      This avoids a scheduling failure for cases like:
      
        cycles, cycles, instructions, instructions (on Core2)
      
      Which would end up being programmed like:
      
        PMC0, PMC1, FP-instructions, fail
      
      Because all events will have the same weight.
      Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/n/tip-8tnwb92asqj7xajqqoty4gel@git.kernel.orgSigned-off-by: NIngo Molnar <mingo@elte.hu>
      4defea85
    • R
      perf, x86: Fix event scheduler for constraints with overlapping counters · bc1738f6
      Robert Richter 提交于
      The current x86 event scheduler fails to resolve scheduling problems
      of certain combinations of events and constraints. This happens if the
      counter mask of such an event is not a subset of any other counter
      mask of a constraint with an equal or higher weight, e.g. constraints
      of the AMD family 15h pmu:
      
                              counter mask    weight
      
       amd_f15_PMC30          0x09            2  <--- overlapping counters
       amd_f15_PMC20          0x07            3
       amd_f15_PMC53          0x38            3
      
      The scheduler does not find then an existing solution. Here is an
      example:
      
       event code     counter         failure         possible solution
      
       0x02E          PMC[3,0]        0               3
       0x043          PMC[2:0]        1               0
       0x045          PMC[2:0]        2               1
       0x046          PMC[2:0]        FAIL            2
      
      The event scheduler may not select the correct counter in the first
      cycle because it needs to know which subsequent events will be
      scheduled. It may fail to schedule the events then.
      
      To solve this, we now save the scheduler state of events with
      overlapping counter counstraints.  If we fail to schedule the events
      we rollback to those states and try to use another free counter.
      
      Constraints with overlapping counters are marked with a new introduced
      overlap flag. We set the overlap flag for such constraints to give the
      scheduler a hint which events to select for counter rescheduling. The
      EVENT_CONSTRAINT_OVERLAP() macro can be used for this.
      
      Care must be taken as the rescheduling algorithm is O(n!) which will
      increase scheduling cycles for an over-commited system dramatically.
      The number of such EVENT_CONSTRAINT_OVERLAP() macros and its counter
      masks must be kept at a minimum. Thus, the current stack is limited to
      2 states to limit the number of loops the algorithm takes in the worst
      case.
      
      On systems with no overlapping-counter constraints, this
      implementation does not increase the loop count compared to the
      previous algorithm.
      
      V2:
      * Renamed redo -> overlap.
      * Reimplementation using perf scheduling helper functions.
      
      V3:
      * Added WARN_ON_ONCE() if out of save states.
      * Changed function interface of perf_sched_restore_state() to use bool
        as return value.
      Signed-off-by: NRobert Richter <robert.richter@amd.com>
      Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/r/1321616122-1533-3-git-send-email-robert.richter@amd.comSigned-off-by: NIngo Molnar <mingo@elte.hu>
      bc1738f6
    • R
      perf, x86: Implement event scheduler helper functions · 1e2ad28f
      Robert Richter 提交于
      This patch introduces x86 perf scheduler code helper functions. We
      need this to later add more complex functionality to support
      overlapping counter constraints (next patch).
      
      The algorithm is modified so that the range of weight values is now
      generated from the constraints. There shouldn't be other functional
      changes.
      
      With the helper functions the scheduler is controlled. There are
      functions to initialize, traverse the event list, find unused counters
      etc. The scheduler keeps its own state.
      
      V3:
      * Added macro for_each_set_bit_cont().
      * Changed functions interfaces of perf_sched_find_counter() and
        perf_sched_next_event() to use bool as return value.
      * Added some comments to make code better understandable.
      
      V4:
      * Fix broken event assignment if weight of the first event is not
        wmin (perf_sched_init()).
      Signed-off-by: NRobert Richter <robert.richter@amd.com>
      Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/r/1321616122-1533-2-git-send-email-robert.richter@amd.comSigned-off-by: NIngo Molnar <mingo@elte.hu>
      1e2ad28f
  3. 05 12月, 2011 8 次提交
  4. 14 11月, 2011 3 次提交
  5. 12 11月, 2011 3 次提交
  6. 11 11月, 2011 14 次提交
  7. 10 11月, 2011 4 次提交
    • M
      x86, perf: Add a build-time sanity test to the x86 decoder · 1ec454ba
      Masami Hiramatsu 提交于
      Add a sanity test of x86 insn decoder against a stream
      of randomly generated input, at build time.
      
      This test is also able to reproduce any bug that might
      trigger by allowing the passing of random-seed and
      iteration-number to the test, or by passing input
      which has invalid byte code.
      
      Changes in V2:
       - Code cleanup.
       - Show how to reproduce the error by insn_sanity test.
      Signed-off-by: NMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: acme@redhat.com
      Cc: ming.m.lin@intel.com
      Cc: robert.richter@amd.com
      Cc: ravitillo@lbl.gov
      Cc: yrl.pp-manager.tt@hitachi.com
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/20111020140109.20938.92572.stgit@localhost.localdomainSigned-off-by: NIngo Molnar <mingo@elte.hu>
      1ec454ba
    • Y
      arm/tegra: enable headphone detection gpio on seaboard · 686448d7
      Yufeng Shen 提交于
      Enable the headphone detection gpio on tegra platform.
      Signed-off-by: NYufeng Shen <miletus@chromium.org>
      Acked-by: NStephen Warren <swarren@nvidia.com>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      686448d7
    • S
      arm/dt: Fix ventana SDHCI power-gpios · c406eeb3
      Stephen Warren 提交于
      Ventana uses the same SDHCI GPIOs as Seaboard; PI6 (70) is the power GPIO
      for the SD port, and there is no power GPIO for the MMC chip.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      c406eeb3
    • S
      arm/tegra: Don't create duplicate gpio and pinmux devices · 4b91b6fb
      Stephen Warren 提交于
      *_pinmux_init() register the GPIO and pinmux devices so that they're ready
      before any other device needs them.
      
      *_pinmux_init() are also called by board-dt.c in order to set up the GPIO
      and pinmux configurations. In this case, if we register the devices, they
      end up being probed once due to this registration, and a second time due
      to a device-tree node (or vice-versa). The second probe fails since the
      memory regions are already requested. Besides, we don't actually want the
      duplicated devices.
      
      To avoid this duplicate registration, modify *_pinmux_init() to check
      whether it's running on a DT machine. If not, register the pinmux devices.
      If so, don't register them.
      
      Finally, modify board-dt.c to call the *_pinmux_init() after all devices have
      been instantiated from device-tree. This allows the GPIO and pinmux devices
      to be instantiated and initialized before calling functions to configure the
      hardware.
      
      This has one disadvantage: The pinmux and GPIO initialization now happens
      after /all/ devices are instantiated, rather than after just gpio and
      pinmux but before anything else. So the correct HW configuration is not
      in place when e.g. the SD/MMC device is probed. Long-term, this should be
      solved by doing both:
      
      a) Initializing the HW state from DT nodes during GPIO and pinmux device
         probe.
      b) Using the deferred driver probe mechanism, so that drivers can defer
         their probe until after the gpio and pinmux drivers have probed.
      
      v2: s/int is_dt/bool is_dt/
      v3: Use of_machine_is_compatible inside *_pinmux_init() rather than passing
      an explicit parameter into the function from outside.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      4b91b6fb
  8. 09 11月, 2011 3 次提交