linux-stable/arch/powerpc/perf/hv-24x7-domains.h
Cody P Schafer 5c5cd7b502 powerpc/perf/hv-24x7: parse catalog and populate sysfs with events
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: Cody P Schafer <cody@linux.vnet.ibm.com>
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2015-02-02 17:56:38 +11:00

28 lines
1 KiB
C

/*
* DOMAIN(name, num, index_kind, is_physical)
*
* @name: An all caps token, suitable for use in generating an enum
* member and appending to an event name in sysfs.
*
* @num: The number corresponding to the domain as given in
* documentation. We assume the catalog domain and the hcall
* domain have the same numbering (so far they do), but this
* may need to be changed in the future.
*
* @index_kind: A stringifiable token describing the meaning of the index
* within the given domain. Must fit the parsing rules of the
* perf sysfs api.
*
* @is_physical: True if the domain is physical, false otherwise (if virtual).
*
* Note: The terms PHYS_CHIP, PHYS_CORE, VCPU correspond to physical chip,
* physical core and virtual processor in 24x7 Counters specifications.
*/
DOMAIN(PHYS_CHIP, 0x01, chip, true)
DOMAIN(PHYS_CORE, 0x02, core, true)
DOMAIN(VCPU_HOME_CORE, 0x03, vcpu, false)
DOMAIN(VCPU_HOME_CHIP, 0x04, vcpu, false)
DOMAIN(VCPU_HOME_NODE, 0x05, vcpu, false)
DOMAIN(VCPU_REMOTE_NODE, 0x06, vcpu, false)