linux/include/uapi/linux
Andi Kleen fdfbbd07e9 perf: Add generic transaction flags
Add a generic qualifier for transaction events, as a new sample
type that returns a flag word. This is particularly useful
for qualifying aborts: to distinguish aborts which happen
due to asynchronous events (like conflicts caused by another
CPU) versus instructions that lead to an abort.

The tuning strategies are very different for those cases,
so it's important to distinguish them easily and early.

Since it's inconvenient and inflexible to filter for this
in the kernel we report all the events out and allow
some post processing in user space.

The flags are based on the Intel TSX events, but should be fairly
generic and mostly applicable to other HTM architectures too. In addition
to various flag words there's also reserved space to report an
program supplied abort code. For TSX this is used to distinguish specific
classes of aborts, like a lock busy abort when doing lock elision.

Flags:

Elision and generic transactions 		   (ELISION vs TRANSACTION)
(HLE vs RTM on TSX; IBM etc.  would likely only use TRANSACTION)
Aborts caused by current thread vs aborts caused by others (SYNC vs ASYNC)
Retryable transaction				   (RETRY)
Conflicts with other threads			   (CONFLICT)
Transaction write capacity overflow		   (CAPACITY WRITE)
Transaction read capacity overflow		   (CAPACITY READ)

Transactions implicitely aborted can also return an abort code.
This can be used to signal specific events to the profiler. A common
case is abort on lock busy in a RTM eliding library (code 0xff)
To handle this case we include the TSX abort code

Common example aborts in TSX would be:

- Data conflict with another thread on memory read.
                                      Flags: TRANSACTION|ASYNC|CONFLICT
- executing a WRMSR in a transaction. Flags: TRANSACTION|SYNC
- HLE transaction in user space is too large
                                      Flags: ELISION|SYNC|CAPACITY-WRITE

The only flag that is somewhat TSX specific is ELISION.

This adds the perf core glue needed for reporting the new flag word out.

v2: Add MEM/MISC
v3: Move transaction to the end
v4: Separate capacity-read/write and remove misc
v5: Remove _SAMPLE. Move abort flags to 32bit. Rename
    transaction to txn
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1379688044-14173-2-git-send-email-andi@firstfloor.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2013-10-04 10:06:08 +02:00
..
byteorder
caif caif: Remove my bouncing email address. 2013-04-23 13:25:51 -04:00
can can: gw: add a per rule limitation of frame hops 2013-08-29 22:58:24 +02:00
cifs cifs: Move and expand MAX_SERVER_SIZE definition 2013-09-08 14:34:22 -05:00
dvb [media] demux.h: Remove duplicated enum 2013-04-08 06:53:15 -03:00
hdlc Fix the wanxl firmware to include missing constants 2012-11-09 16:28:37 -05:00
hsi
isdn
mmc
netfilter netfilter: add SYNPROXY core/target 2013-08-28 00:27:54 +02:00
netfilter_arp
netfilter_bridge uapi: Convert some uses of 6 to ETH_ALEN 2013-08-02 12:33:54 -07:00
netfilter_ipv4 uapi: Convert some uses of 6 to ETH_ALEN 2013-08-02 12:33:54 -07:00
netfilter_ipv6 netfilter: fix struct ip6t_frag field description 2013-04-02 12:25:57 +02:00
nfsd
raid UAPI: fix endianness conditionals in linux/raid/md_p.h 2013-03-13 15:21:49 -07:00
spi
sunrpc
tc_act
tc_ematch
usb USB: move the definition of USB_MAXCHILDREN 2013-07-16 15:33:02 -07:00
wimax uapi: Convert some uses of 6 to ETH_ALEN 2013-08-02 12:33:54 -07:00
Kbuild Merge git://git.infradead.org/users/willy/linux-nvme 2013-09-07 20:19:02 -07:00
a.out.h
acct.h UAPI: fix endianness conditionals in linux/acct.h 2013-03-13 15:21:48 -07:00
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h UAPI: fix endianness conditionals in linux/aio_abi.h 2013-03-13 15:21:48 -07:00
apm_bios.h
arcfb.h
atalk.h
atm.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
audit.h audit: Make testing for a valid loginuid explicit. 2013-05-07 22:27:15 -04:00
auto_fs.h unbreak automounter support on 64-bit kernel with 32-bit userspace (v2) 2013-02-08 20:42:18 +01:00
auto_fs4.h
auxvec.h powerpc: Add HWCAP2 aux entry 2013-04-26 16:08:16 +10:00
ax25.h
b1lli.h
baycom.h
bcm933xx_hcs.h MIPS: BCM63XX: recognize Cable Modem firmware format 2013-07-01 15:10:53 +02:00
bfs_fs.h
binfmts.h
blkpg.h
blktrace_api.h
bpqether.h
bsg.h
btrfs.h Btrfs: use __u64 in exported user headers 2013-09-01 08:16:01 -04:00
can.h
capability.h
capi.h
cciss_defs.h
cciss_ioctl.h
cdrom.h libata: identify and init ZPODD devices 2013-01-21 15:40:35 -05:00
cgroupstats.h
chio.h
cm4000_cs.h Omnikey Cardman 4000: pull in ioctl.h in user header 2013-08-28 19:26:38 -07:00
cn_proc.h connector: Added coredumping event to the process connector 2013-03-20 13:23:21 -04:00
coda.h
coda_psdev.h
coff.h
connector.h Drivers: hv: Add a new driver to support host initiated backup 2013-03-15 12:12:36 -07:00
const.h linux/const.h: Add _BITUL() and _BITULL() 2013-06-25 15:50:04 -07:00
cramfs_fs.h
cuda.h
cyclades.h
cycx_cfm.h
dcbnl.h
dccp.h
dlm.h
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlmconstants.h
dm-ioctl.h dm: add statistics support 2013-09-05 20:46:06 -04:00
dm-log-userspace.h
dn.h uapi: Convert some uses of 6 to ETH_ALEN 2013-08-02 12:33:54 -07:00
dqblk_xfs.h quota: Add a new quotactl command Q_XGETQSTATV 2013-08-20 16:53:58 -05:00
edd.h
efs_fs_sb.h
elf-em.h Move the EM_ARM and EM_AARCH64 definitions to uapi/linux/elf-em.h 2013-09-02 16:35:50 +01:00
elf-fdpic.h
elf.h metag: ptrace: Implement NT_METAG_TLS 2013-03-27 14:37:47 +00:00
elfcore.h
errno.h
errqueue.h
ethtool.h net: ethtool: disambiguate XCVR_* meaning 2013-05-27 22:42:50 -07:00
eventpoll.h revert "epoll: support for disabling items, and a self-test app" 2012-11-09 06:41:46 +01:00
fadvise.h
falloc.h
fanotify.h
fb.h
fcntl.h
fd.h
fdreg.h
fib_rules.h fib_rules: fix suppressor names and default values 2013-08-03 10:40:23 -07:00
fiemap.h ext4: add support for extent pre-caching 2013-08-16 22:05:14 -04:00
filter.h filter: add ANC_PAY_OFFSET instruction for loading payload start offset 2013-03-20 13:15:45 -04:00
firewire-cdev.h firewire: fix libdc1394/FlyCap2 iso event regression 2013-07-27 20:24:36 +02:00
firewire-constants.h
flat.h
fs.h fs: bump inode and dentry counters to long 2013-09-10 18:56:29 -04:00
fsl_hypervisor.h
fuse.h fuse: add flag to turn on async direct IO 2013-05-01 14:37:21 +02:00
futex.h
gameport.h
gen_stats.h net_sched: add 64bit rate estimators 2013-06-11 02:51:03 -07:00
genetlink.h
gfs2_ondisk.h
gigaset_dev.h
hdlc.h
hdlcdrv.h
hdreg.h
hid.h
hiddev.h
hidraw.h
hpet.h
hw_breakpoint.h perf: Make perf build for x86 with UAPI disintegration applied 2012-11-19 22:21:03 +00:00
hysdn_if.h
i2c-dev.h
i2c.h
i2o-dev.h
i8k.h
icmp.h
icmpv6.h ICMPv6: treat dest unreachable codes 5 and 6 as EACCES, not EPROTO 2013-09-03 22:11:44 -04:00
if.h
if_addr.h
if_addrlabel.h
if_alg.h
if_arcnet.h
if_arp.h net: if_arp: add ARPHRD_NETLINK type 2013-06-24 16:39:05 -07:00
if_bonding.h
if_bridge.h uapi: Convert some uses of 6 to ETH_ALEN 2013-08-02 12:33:54 -07:00
if_cablemodem.h if_cablemodem.h: Add parenthesis around ioctl macros 2013-05-08 13:13:30 -07:00
if_eql.h
if_ether.h net: add ETH_P_802_3_MIN 2013-03-28 01:20:42 -04:00
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_link.h vxlan: add ipv6 support 2013-08-31 22:30:00 -04:00
if_ltalk.h
if_packet.h net: packet: add randomized fanout scheduler 2013-08-29 16:43:29 -04:00
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h pptp: fix byte order warnings 2013-08-13 15:10:22 -07:00
if_slip.h
if_team.h
if_tun.h tun: Get skfilter layout 2013-08-21 12:21:45 -07:00
if_tunnel.h sit: allow to configure 6rd tunnels via netlink 2012-11-20 13:43:28 -05:00
if_vlan.h net/8021q: Implement Multiple VLAN Registration Protocol (MVRP) 2013-02-10 20:37:22 -05:00
if_x25.h
igmp.h
in.h net: sync some IP headers with glibc 2013-09-04 13:12:43 -04:00
in6.h net: sync some IP headers with glibc 2013-09-04 13:12:43 -04:00
in_route.h
inet_diag.h
inotify.h
input.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2013-09-15 07:13:39 -04:00
ioctl.h
ip.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-08-26 16:37:08 -04:00
ip6_tunnel.h
ip_vs.h ipvs: SH fallback and L4 hashing 2013-06-26 18:01:46 +09:00
ipc.h
ipmi.h ipmi: remove superfluous kernel/userspace explanation 2013-02-27 19:10:21 -08:00
ipmi_msgdefs.h
ipsec.h
ipv6.h ipv6: drop fragmented ndisc packets by default (RFC 6980) 2013-08-29 15:32:08 -04:00
ipv6_route.h ipv6: export IP6_RT_PRIO_* to userland 2012-11-16 01:47:40 -05:00
ipx.h
irda.h
irqnr.h
isdn.h
isdn_divertif.h
isdn_ppp.h
isdnif.h
iso_fs.h
ivtv.h
ivtvfb.h
ixjuser.h
jffs2.h
joystick.h
kd.h
kdev_t.h
kernel-page-flags.h
kernel.h
kernelcapi.h
kexec.h
keyboard.h
keyctl.h
kvm.h KVM: PPC: reserve a capability number for multitce support 2013-08-26 15:36:58 +03:00
kvm_para.h kvm uapi: Add KICK_CPU and PV_UNHALT definition to uapi 2013-08-26 12:46:01 +03:00
l2tp.h
libc-compat.h net: sync some IP headers with glibc 2013-09-04 13:12:43 -04:00
limits.h
llc.h
loop.h
lp.h
magic.h hostfs: move HOSTFS_SUPER_MAGIC to <linux/magic.h> 2013-05-04 15:48:44 -04:00
major.h
map_to_7segment.h
matroxfb.h
mdio.h
media.h [media] media: add support for decoder as one of media entity types 2013-03-21 14:05:31 -03:00
mei.h
mempolicy.h mm: numa: Migrate on reference policy 2012-12-11 14:42:48 +00:00
meye.h [media] meye: convert to the control framework 2013-02-05 18:23:47 -02:00
mii.h
minix_fs.h
mman.h
mmtimer.h
module.h module: add flags arg to sys_finit_module() 2012-12-14 13:05:23 +10:30
mqueue.h
mroute.h mcast: add multicast proxy support (IPv4 and IPv6) 2013-01-21 13:55:14 -05:00
mroute6.h mcast: add multicast proxy support (IPv4 and IPv6) 2013-01-21 13:55:14 -05:00
msdos_fs.h fatfs: add FAT_IOCTL_GET_VOLUME_ID 2013-07-09 10:33:25 -07:00
msg.h ipc: introduce message queue copy feature 2013-01-04 16:11:45 -08:00
mtio.h
n_r3964.h
nbd.h nbd: support FLUSH requests 2013-02-27 19:10:22 -08:00
ncp.h
ncp_fs.h
ncp_mount.h
ncp_no.h
neighbour.h vxlan: generalize forwarding tables 2013-03-17 12:23:46 -04:00
net.h
net_dropmon.h
net_tstamp.h
netconf.h netconf: advertise mc_forwarding status 2012-12-04 13:08:10 -05:00
netdevice.h
netfilter.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h netlink: mmaped netlink: ring setup 2013-04-19 14:57:57 -04:00
netlink_diag.h netlink: add RX/TX-ring support to netlink diag 2013-04-19 14:57:58 -04:00
netrom.h
nfc.h NFC: netlink: Add result of firmware operation to completion event 2013-08-14 01:12:58 +02:00
nfs.h
nfs2.h
nfs3.h
nfs4.h
nfs4_mount.h
nfs_fs.h
nfs_idmap.h
nfs_mount.h
nfsacl.h
nl80211.h cfg80211: add flags to cfg80211_rx_mgmt() 2013-08-23 16:06:03 +02:00
nubus.h
nvme.h NVMe: Update nvme_id_power_state with latest spec 2013-09-03 16:32:26 -04:00
nvram.h
omap3isp.h
omapfb.h
oom.h mm, oom: reintroduce /proc/pid/oom_adj 2012-11-16 10:15:35 -08:00
openvswitch.h openvswitch: Add SCTP support 2013-08-26 14:03:13 -07:00
packet_diag.h sock_diag: allow to dump bpf filters 2013-04-29 13:21:30 -04:00
param.h
parport.h
patchkey.h
pci.h
pci_regs.h PCI: Add offsets of PCIe capability registers 2013-08-28 11:28:10 -06:00
perf_event.h perf: Add generic transaction flags 2013-10-04 10:06:08 +02:00
personality.h
pfkeyv2.h
pg.h
phantom.h
phonet.h
pkt_cls.h
pkt_sched.h pkt_sched: fq: Fair Queue packet scheduler 2013-08-29 21:38:31 -04:00
pktcdvd.h
pmu.h
poll.h
posix_types.h
ppdev.h
ppp-comp.h
ppp-ioctl.h
ppp_defs.h
pps.h
prctl.h
ptp_clock.h ptp: add an ioctl to compare PHC time with system time 2012-11-01 11:41:34 -04:00
ptrace.h ptrace: add ability to get/set signal-blocked mask 2013-07-03 16:08:01 -07:00
qnx4_fs.h
qnxtypes.h
quota.h
radeonfb.h
random.h
raw.h
rds.h
reboot.h
reiserfs_fs.h
reiserfs_xattr.h xattr: Constify ->name member of "struct xattr". 2013-07-25 19:30:03 +10:00
resource.h
rfkill.h rfkill: Add NFC to the list of supported radios 2013-04-12 16:54:38 +02:00
romfs_fs.h
rose.h
route.h
rtc.h
rtnetlink.h tcp: introduce a per-route knob for quick ack 2013-06-19 23:06:51 -07:00
scc.h
sched.h
screen_info.h
sctp.h net: sctp: trivial: update mailing list address 2013-07-24 17:53:38 -07:00
sdla.h
seccomp.h
securebits.h
selinux_netlink.h
sem.h
serial.h
serial_core.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile 2013-09-06 11:14:33 -07:00
serial_reg.h Revert "OMAP: UART: Keep the TX fifo full when possible" 2013-08-27 16:02:18 -07:00
serio.h
shm.h
signal.h unify SS_ONSTACK/SS_DISABLE definitions 2012-12-19 18:07:39 -05:00
signalfd.h
snmp.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-08-16 15:37:26 -07:00
sock_diag.h
socket.h
sockios.h
som.h
sonet.h
sonypi.h
sound.h
soundcard.h
stat.h
stddef.h
string.h
suspend_ioctls.h
swab.h byteorder: allow arch to opt to use GCC intrinsics for byteswapping 2012-12-06 01:22:31 +00:00
synclink.h
sysctl.h
sysinfo.h
taskstats.h
tcp.h tcp: TCP_NOTSENT_LOWAT socket option 2013-07-24 17:54:48 -07:00
tcp_metrics.h
telephony.h
termios.h
time.h timekeeping: Add CLOCK_TAI clockid 2013-03-22 16:19:59 -07:00
times.h
timex.h
tiocl.h
tipc.h tipc: update code comments to reflect new uapi header path 2013-06-17 15:53:00 -07:00
tipc_config.h tipc: update code comments to reflect new uapi header path 2013-06-17 15:53:00 -07:00
toshiba.h
tty.h
tty_flags.h
types.h
udf_fs_i.h
udp.h
uhid.h HID: uhid: use generic hidinput_input_event() 2013-07-31 10:33:05 +02:00
uinput.h
uio.h
ultrasound.h
un.h
unistd.h
unix_diag.h net: fix *_DIAG_MAX constants 2013-03-21 12:36:33 -04:00
usbdevice_fs.h
utime.h
utsname.h
uuid.h
uvcvideo.h
v4l2-common.h
v4l2-controls.h [media] V4L: Add VP8 encoder controls 2013-08-18 07:13:36 -03:00
v4l2-dv-timings.h [media] v4l2-dv-timings.h: remove duplicate V4L2_DV_BT_DMT_1366X768P60 2013-08-18 08:13:51 -03:00
v4l2-mediabus.h [media] v4l: Add media format codes for ARGB8888 and AYUV8888 on 32-bit busses 2013-08-18 07:23:07 -03:00
v4l2-subdev.h
veth.h
vfio.h vfio-pci: PCI hot reset interface 2013-09-04 11:28:04 -06:00
vhost.h tcm_vhost: header split up 2013-05-02 13:40:15 +03:00
videodev2.h [media] videodev2.h: defines to calculate blanking and frame sizes 2013-08-18 08:17:35 -03:00
virtio_9p.h
virtio_balloon.h virtio: do not export "u16" and "u64" to userspace 2013-04-02 16:42:58 +10:30
virtio_blk.h
virtio_config.h virtio: VIRTIO_F_ANY_LAYOUT feature 2013-07-09 10:47:45 +09:30
virtio_console.h Simple warning fix for module sections. If too late to pull, no big deal. 2013-07-03 13:09:06 -07:00
virtio_ids.h caif_virtio: Introduce caif over virtio 2013-03-20 14:06:06 +10:30
virtio_net.h uapi: Convert some uses of 6 to ETH_ALEN 2013-08-02 12:33:54 -07:00
virtio_pci.h virtio_pci: better macro exported in uapi 2013-05-20 12:08:09 +09:30
virtio_ring.h
virtio_rng.h
vm_sockets.h VSOCK: Split vm_sockets.h into kernel/uapi 2013-03-08 12:24:48 -05:00
vt.h
wait.h
wanrouter.h wanrouter: delete now orphaned header content, files/drivers 2013-01-31 19:56:35 -05:00
watchdog.h
wimax.h
wireless.h
x25.h
xattr.h hfsplus: add osx.* prefix for handling namespace of Mac OS X extended attributes 2013-02-27 19:10:10 -08:00
xfrm.h xfrm: allow to avoid copying DSCP during encapsulation 2013-03-06 07:02:45 +01:00