OrangePi_CM5/include/uapi/linux
Peter Zijlstra fa73158710 perf: Fix capabilities bitfield compatibility in 'struct perf_event_mmap_page'
Solve the problems around the broken definition of perf_event_mmap_page::
cap_usr_time and cap_usr_rdpmc fields which used to overlap, partially
fixed by:

  860f085b74 ("perf: Fix broken union in 'struct perf_event_mmap_page'")

The problem with the fix (merged in v3.12-rc1 and not yet released
officially), noticed by Vince Weaver is that the new behavior is
not detectable by new user-space, and that due to the reuse of the
field names it's easy to mis-compile a binary if old headers are used
on a new kernel or new headers are used on an old kernel.

To solve all that make this change explicit, detectable and self-contained,
by iterating the ABI the following way:

 - Always clear bit 0, and rename it to usrpage->cap_bit0, to at least not
   confuse old user-space binaries. RDPMC will be marked as unavailable
   to old binaries but that's within the ABI, this is a capability bit.

 - Rename bit 1 to ->cap_bit0_is_deprecated and always set it to 1, so new
   libraries can reliably detect that bit 0 is deprecated and perma-zero
   without having to check the kernel version.

 - Use bits 2, 3, 4 for the newly defined, correct functionality:

	cap_user_rdpmc		: 1, /* The RDPMC instruction can be used to read counts */
	cap_user_time		: 1, /* The time_* fields are used */
	cap_user_time_zero	: 1, /* The time_zero field is used */

 - Rename all the bitfield names in perf_event.h to be different from the
   old names, to make sure it's not possible to mis-compile it
   accidentally with old assumptions.

The 'size' field can then be used in the future to add new fields and it
will act as a natural ABI version indicator as well.

Also adjust tools/perf/ userspace for the new definitions, noticed by
Adrian Hunter.

Reported-by: Vince Weaver <vincent.weaver@maine.edu>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Also-Fixed-by: Adrian Hunter <adrian.hunter@intel.com>
Link: http://lkml.kernel.org/n/tip-zr03yxjrpXesOzzupszqglbv@git.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2013-09-20 09:45:11 +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
…
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
…
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
…
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
…
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
…
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
…
if_vlan.h
…
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
…
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
…
meye.h
…
mii.h
…
minix_fs.h
…
mman.h
…
mmtimer.h
…
module.h
…
mqueue.h
…
mroute.h
…
mroute6.h
…
msdos_fs.h fatfs: add FAT_IOCTL_GET_VOLUME_ID 2013-07-09 10:33:25 -07:00
msg.h
…
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
…
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
…
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: Fix capabilities bitfield compatibility in 'struct perf_event_mmap_page' 2013-09-20 09:45:11 +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
…
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
…
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
…
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
…
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