1. 02 2月, 2015 8 次提交
    • C
      powerpc/perf/hv-gpci: add the remaining gpci requests · 97bf2640
      Cody P Schafer 提交于
      Add the remaining gpci requests that contain counters suitable for use
      by perf. Omit those that don't contain any counters (but note their
      ommision).
      Signed-off-by: NCody P Schafer <cody@linux.vnet.ibm.com>
      Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      97bf2640
    • C
      powerpc/perf/{hv-gpci, hv-common}: generate requests with counters annotated · 9e9f6010
      Cody P Schafer 提交于
      This adds (in req-gen/) a framework for defining gpci counter requests.
      It uses macro magic similar to ftrace.
      
      Also convert the existing hv-gpci request structures and enum values to
      use the new framework (and adjust old users of the structs and enum
      values to cope with changes in naming).
      
      In exchange for this macro disaster, we get autogenerated event listing
      for GPCI in sysfs, build time field offset checking, and zero
      duplication of information about GPCI requests.
      Signed-off-by: NCody P Schafer <cody@linux.vnet.ibm.com>
      Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      9e9f6010
    • C
      powerpc/perf/hv-24x7: parse catalog and populate sysfs with events · 5c5cd7b5
      Cody P Schafer 提交于
      Retrieves and parses the 24x7 catalog on POWER systems that supply it
      (right now, only POWER 8). Events are exposed via sysfs in the standard
      fashion, and are all parameterized.
      
      	$ cd /sys/bus/event_source/devices/hv_24x7/events
      
      	$ cat HPM_CS_FROM_L4_LDATA__PHYS_CORE
      	domain=0x2,offset=0xd58,core=?,lpar=0x0
      
      	$ cat HPM_TLBIE__VCPU_HOME_CHIP
      	domain=0x4,offset=0x358,vcpu=?,lpar=?
      
      where user is required to specify values for the fields with '?' (like
      core, vcpu, lpar above), when specifying the event with the perf tool.
      
      Catalog is (at the moment) only parsed on boot. It needs re-parsing
      when a some hypervisor events occur. At that point we'll also need to
      prevent old events from continuing to function (counter that is passed
      in via spare space in the config values?).
      Signed-off-by: NCody P Schafer <cody@linux.vnet.ibm.com>
      Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      5c5cd7b5
    • S
      perf: define EVENT_DEFINE_RANGE_FORMAT_LITE helper · e08e5282
      sukadev@linux.vnet.ibm.com 提交于
      Define a lite version of the EVENT_DEFINE_RANGE_FORMAT() that avoids
      defining helper functions for the bit-field ranges.
      Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      e08e5282
    • G
      powerpc/kernel: Avoid initializing device-tree pointer twice · fe12545e
      Gavin Shan 提交于
      As commit 50ba08f3 ("of/fdt: Don't clear initial_boot_params
      if fdt_check_header() fails") does, the device-tree pointer
      "initial_boot_params" is initialized by early_init_dt_verify(),
      which is called by early_init_devtree(). So we needn't explicitly
      initialize that again in early_init_devtree().
      Signed-off-by: NGavin Shan <gwshan@linux.vnet.ibm.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      fe12545e
    • M
      powerpc: Remove old compile time disabled syscall tracing code · a4bcbe6a
      Michael Ellerman 提交于
      We have code to do syscall tracing which is disabled at compile time by
      default. It's not been touched since the dawn of time (ie. v2.6.12).
      
      There are now better ways to do syscall tracing, ie. using the
      raw_syscall, or syscall tracepoints.
      
      For the specific case of tracing syscalls at boot on a system that
      doesn't get to userspace, you can boot with:
      
        trace_event=syscalls tp_printk=on
      
      Which will trace syscalls from boot, and echo all output to the console.
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      a4bcbe6a
    • M
      powerpc/kernel: Make syscall_exit a local label · 4c3b2168
      Michael Ellerman 提交于
      Currently when we back trace something that is in a syscall we see
      something like this:
      
      [c000000000000000] [c000000000000000] SyS_read+0x6c/0x110
      [c000000000000000] [c000000000000000] syscall_exit+0x0/0x98
      
      Although it's entirely correct, seeing syscall_exit at the bottom can be
      confusing - we were exiting from a syscall and then called SyS_read() ?
      
      If we instead change syscall_exit to be a local label we get something
      more intuitive:
      
      [c0000001fa46fde0] [c00000000026719c] SyS_read+0x6c/0x110
      [c0000001fa46fe30] [c000000000009264] system_call+0x38/0xd0
      
      ie. we were handling a system call, and it was SyS_read().
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      4c3b2168
    • R
      cxl: Fix device_node reference counting · 6f963ec2
      Ryan Grimm 提交于
      When unbinding and rebinding the driver on a system with a card in PHB0, this
      error condition is reached after a few attempts:
      
      ERROR: Bad of_node_put() on /pciex@3fffe40000000
      CPU: 0 PID: 3040 Comm: bash Not tainted 3.18.0-rc3-12545-g3627ffe #152
      Call Trace:
      [c000000721acb5c0] [c00000000086ef94] .dump_stack+0x84/0xb0 (unreliable)
      [c000000721acb640] [c00000000073a0a8] .of_node_release+0xd8/0xe0
      [c000000721acb6d0] [c00000000044bc44] .kobject_release+0x74/0xe0
      [c000000721acb760] [c0000000007394fc] .of_node_put+0x1c/0x30
      [c000000721acb7d0] [c000000000545cd8] .cxl_probe+0x1a98/0x1d50
      [c000000721acb900] [c0000000004845a0] .local_pci_probe+0x40/0xc0
      [c000000721acb980] [c000000000484998] .pci_device_probe+0x128/0x170
      [c000000721acba30] [c00000000052400c] .driver_probe_device+0xac/0x2a0
      [c000000721acbad0] [c000000000522468] .bind_store+0x108/0x160
      [c000000721acbb70] [c000000000521448] .drv_attr_store+0x38/0x60
      [c000000721acbbe0] [c000000000293840] .sysfs_kf_write+0x60/0xa0
      [c000000721acbc50] [c000000000292500] .kernfs_fop_write+0x140/0x1d0
      [c000000721acbcf0] [c000000000208648] .vfs_write+0xd8/0x260
      [c000000721acbd90] [c000000000208b18] .SyS_write+0x58/0x100
      [c000000721acbe30] [c000000000009258] syscall_exit+0x0/0x98
      
      We are missing a call to of_node_get(). pnv_pci_to_phb_node() should
      call of_node_get() otherwise np's reference count isn't incremented and
      it might go away. Rename pnv_pci_to_phb_node() to pnv_pci_get_phb_node()
      so it's clear it calls of_node_get().
      Signed-off-by: NRyan Grimm <grimm@linux.vnet.ibm.com>
      Acked-by: NIan Munsie <imunsie@au1.ibm.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      6f963ec2
  2. 31 1月, 2015 1 次提交
  3. 30 1月, 2015 24 次提交
  4. 28 1月, 2015 7 次提交