twx-linux/include/uapi/linux
Sukadev Bhattiprolu 8c5073db0e powerpc/perf: Define big-endian version of perf_mem_data_src
perf_mem_data_src is a union that is initialized in the kernel via the ->val
field and accessed by userspace via the mem_xxx bitfields. For this to work
correctly on big endian platforms, we need a big-endian definition for the
bitfields.

Currently on a big endian system, if a user requests PERF_SAMPLE_DATA_SRC (perf
report -d), they will get the default value from perf_sample_data_init(), which
is PERF_MEM_NA. The value for PERF_MEM_NA is constructed using shifts:

  /* TLB access */
  #define PERF_MEM_TLB_NA		0x01 /* not available */
  ...
  #define PERF_MEM_TLB_SHIFT	26

  #define PERF_MEM_S(a, s) \
	(((__u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT)

  #define PERF_MEM_NA (PERF_MEM_S(OP, NA)   |\
		    PERF_MEM_S(LVL, NA)   |\
		    PERF_MEM_S(SNOOP, NA) |\
		    PERF_MEM_S(LOCK, NA)  |\
		    PERF_MEM_S(TLB, NA))

Which works out as:

  ((0x01 << 0) | (0x01 << 5) | (0x01 << 19) | (0x01 << 24) | (0x01 << 26))

Which means the PERF_MEM_NA value comes out of the kernel as 0x5080021
in CPU endian.

But then in the perf tool, the code uses the bitfields to inspect the value, and
currently the bitfields are defined using little endian ordering.

So eg. in perf_mem__tlb_scnprintf() we see:
  data_src->val = 0x5080021
             op = 0x0
            lvl = 0x0
          snoop = 0x0
           lock = 0x0
           dtlb = 0x0
           rsvd = 0x5080021

Because of the way the perf tool code is written this is still displayed to the
user as "N/A", so there is no bug visible at the UI level.

Currently there are no big endian architectures which export a meaningful
value (ie. other than PERF_MEM_NA), so the extent of the bug on big endian
platforms is that the PERF_MEM_NA value is exported incorrectly as described
above. Subsequent patches will add support on big endian powerpc for populating
the data source value.

This patch does a minimal fix of adding big endian definition of the bitfields
to match the values that are already exported by the kernel on big endian. And
it makes no change on little endian.

Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Signed-off-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-04-19 20:00:21 +10:00
..
android binder: Add support for file-descriptor arrays 2017-02-10 16:00:01 +01:00
byteorder
caif
can can: dev: add CAN interface API for fixed bitrates 2017-01-24 13:52:00 +01:00
cifs
dvb
genwqe
hdlc
hsi
iio
isdn
mmc
netfilter uapi: fix linux/netfilter/xt_hashlimit.h userspace compilation error 2017-02-25 13:32:04 +01:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd nfsd: opt in to labeled nfs per export 2017-01-31 12:31:54 -05:00
raid
sched sched/headers: Move various ABI definitions to <uapi/linux/sched/types.h> 2017-03-02 08:42:42 +01:00
spi
sunrpc
tc_act net/act_pedit: Introduce 'add' operation 2017-02-10 13:18:33 -05:00
tc_ematch
usb
wimax
a.out.h
acct.h
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h
am437x-vpfe.h
apm_bios.h
arcfb.h
atalk.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h
atm.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 Merge branch 'stable-4.11' of git://git.infradead.org/users/pcmoore/audit 2017-02-21 13:25:50 -08:00
auto_dev-ioctl.h autofs: remove duplicated AUTOFS_DEV_IOCTL_SIZE definition 2017-02-27 18:43:45 -08:00
auto_fs4.h autofs: add command enum/macros for root-dir ioctls 2017-02-27 18:43:45 -08:00
auto_fs.h autofs: add command enum/macros for root-dir ioctls 2017-02-27 18:43:45 -08:00
auxvec.h
ax25.h
b1lli.h
batman_adv.h batman-adv: update copyright years for 2017 2017-01-26 08:34:19 +01:00
baycom.h
bcache.h
bcm933xx_hcs.h
bfs_fs.h
binfmts.h
blkpg.h
blktrace_api.h
blkzoned.h
bpf_common.h
bpf_perf_event.h
bpf.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-02-16 19:34:01 -05:00
bpqether.h
bsg.h
bt-bmc.h
btrfs_tree.h
btrfs.h
can.h
capability.h
capi.h
cciss_defs.h
cciss_ioctl.h
cdrom.h
cec-funcs.h
cec.h
cgroupstats.h
chio.h
cm4000_cs.h
cn_proc.h
coda_psdev.h
coda.h
coff.h
connector.h
const.h
coresight-stm.h
cramfs_fs.h
cryptouser.h
cuda.h
cyclades.h
cycx_cfm.h
dcbnl.h
dccp.h
devlink.h devlink: fix the name of eswitch commands 2017-02-10 14:43:00 -05:00
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlm.h
dlmconstants.h
dm-ioctl.h
dm-log-userspace.h
dma-buf.h
dn.h
dqblk_xfs.h
edd.h
efs_fs_sb.h
elf-em.h
elf-fdpic.h
elf.h
elfcore.h
errno.h
errqueue.h
ethtool.h net: ethtool: add support for 2500BaseT and 5000BaseT link modes 2017-01-30 10:14:28 -05:00
eventpoll.h
fadvise.h
falloc.h
fanotify.h
fb.h
fcntl.h statx: Add a system call to make enhanced file info available 2017-03-02 20:51:15 -05:00
fd.h
fdreg.h
fib_rules.h
fiemap.h
filter.h
firewire-cdev.h
firewire-constants.h
flat.h
fou.h
fs.h fs: Better permission checking for submounts 2017-02-02 04:36:12 +13:00
fsl_hypervisor.h
fuse.h
futex.h
gameport.h
gen_stats.h
genetlink.h
gfs2_ondisk.h
gigaset_dev.h
gpio.h
gsmmux.h
gtp.h
hash_info.h
hdlc.h
hdlcdrv.h
hdreg.h
hid.h
hiddev.h
hidraw.h
hpet.h
hsr_netlink.h
hw_breakpoint.h
hyperv.h
hysdn_if.h
i2c-dev.h
i2c.h
i2o-dev.h
i8k.h
icmp.h
icmpv6.h
if_addr.h
if_addrlabel.h
if_alg.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h bridge: uapi: add per vlan tunnel info 2017-02-03 15:21:21 -05:00
if_cablemodem.h
if_eql.h
if_ether.h RDMA: Adding ethertype ETH_P_IBOE 2017-01-10 14:05:11 -05:00
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_link.h bridge: uapi: add per vlan tunnel info 2017-02-03 15:21:21 -05:00
if_ltalk.h
if_macsec.h
if_packet.h
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_team.h
if_tun.h
if_tunnel.h
if_vlan.h
if_x25.h
if.h uapi: fix linux/if.h userspace compilation errors 2017-02-22 16:09:04 -05:00
ife.h net: Introduce ife encapsulation module 2017-02-03 15:16:45 -05:00
igmp.h bridge: sparse fixes in br_ip6_multicast_alloc_query() 2017-01-17 15:22:05 -05:00
ila.h
in6.h
in_route.h
in.h
inet_diag.h
inotify.h
input-event-codes.h
input.h
ioctl.h
ip6_tunnel.h uapi: fix linux/ip6_tunnel.h userspace compilation errors 2017-02-23 10:46:07 -05:00
ip_vs.h
ip.h
ipc.h
ipmi_msgdefs.h
ipmi.h
ipsec.h
ipv6_route.h uapi: fix linux/ipv6_route.h userspace compilation errors 2017-02-19 18:15:12 -05:00
ipv6.h net/ipv6: allow sysctl to change link-local address generation mode 2017-01-27 10:25:34 -05:00
ipx.h
irda.h
irqnr.h
isdn_divertif.h
isdn_ppp.h
isdn.h
isdnif.h
iso_fs.h
ivtv.h
ivtvfb.h
ixjuser.h
jffs2.h
joystick.h
Kbuild virtio, vhost: optimizations, fixes 2017-03-02 13:53:13 -08:00
kcm.h
kcmp.h
kcov.h
kd.h
kdev_t.h
kernel-page-flags.h
kernel.h
kernelcapi.h
kexec.h
keyboard.h
keyctl.h
kfd_ioctl.h
kvm_para.h KVM: x86: add KVM_HC_CLOCK_PAIRING hypercall 2017-02-07 18:16:45 +01:00
kvm.h KVM: race-free exit from KVM_RUN without POSIX signals 2017-02-17 12:27:37 +01:00
l2tp.h uapi: fix linux/if_pppol2tp.h userspace compilation errors 2017-02-14 22:18:05 -05:00
libc-compat.h
lightnvm.h lightnvm: add ioctls for vector I/Os 2017-01-31 08:32:13 -07:00
limits.h
lirc.h
llc.h uapi: fix linux/llc.h userspace compilation error 2017-02-23 10:46:08 -05:00
loop.h
lp.h
lwtunnel.h
magic.h
major.h
map_to_7segment.h
matroxfb.h
mdio.h
media-bus-format.h
media.h
mei.h
membarrier.h
memfd.h
mempolicy.h
meye.h
mic_common.h
mic_ioctl.h
mii.h
minix_fs.h
mman.h
mmtimer.h
module.h
mpls_iptunnel.h
mpls.h mpls: Packet stats 2017-01-17 14:38:43 -05:00
mqueue.h uapi: mqueue.h: add missing linux/types.h include 2017-02-24 17:46:56 -08:00
mroute6.h uapi: fix linux/mroute6.h userspace compilation errors 2017-02-19 18:15:12 -05:00
mroute.h uapi: fix linux/mroute.h userspace compilation errors 2017-02-19 18:15:12 -05:00
msdos_fs.h
msg.h
mtio.h
n_r3964.h
nbd.h
ncp_fs.h
ncp_mount.h
ncp_no.h
ncp.h
ndctl.h
neighbour.h vxlan: support fdb and learning in COLLECT_METADATA mode 2017-02-03 15:21:21 -05:00
net_dropmon.h
net_namespace.h
net_tstamp.h
net.h
netconf.h net: mpls: Add support for netconf 2017-02-20 11:13:37 -05:00
netdevice.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter.h uapi: stop including linux/sysctl.h in uapi/linux/netfilter.h 2017-02-23 21:51:39 +01:00
netlink_diag.h
netlink.h smc: netlink interface for SMC sockets 2017-01-09 16:07:41 -05:00
netrom.h
nfc.h
nfs2.h
nfs3.h
nfs4_mount.h
nfs4.h
nfs_fs.h
nfs_idmap.h
nfs_mount.h
nfs.h
nfsacl.h
nilfs2_api.h
nilfs2_ondisk.h
nl80211.h cfg80211: fix NAN bands definition 2017-02-09 15:17:30 +01:00
nsfs.h nsfs: Add an ioctl() to return owner UID of a userns 2017-02-03 14:35:43 +13:00
nubus.h
nvme_ioctl.h
nvram.h
omap3isp.h
omapfb.h
oom.h
openvswitch.h openvswitch: Add force commit. 2017-02-09 22:59:34 -05:00
packet_diag.h uapi: fix linux/packet_diag.h userspace compilation error 2017-03-09 13:22:28 -08:00
param.h
parport.h
patchkey.h
pci_regs.h Merge branch 'pci/dpc' into next 2017-02-15 11:56:07 -06:00
pci.h
perf_event.h powerpc/perf: Define big-endian version of perf_mem_data_src 2017-04-19 20:00:21 +10:00
personality.h
pfkeyv2.h
pg.h
phantom.h
phonet.h
pkt_cls.h net/sched: Reflect HW offload status 2017-02-17 12:08:05 -05:00
pkt_sched.h
pktcdvd.h
pmu.h
poll.h
posix_acl_xattr.h
posix_acl.h
posix_types.h
ppdev.h
ppp_defs.h
ppp-comp.h
ppp-ioctl.h
pps.h
pr.h
prctl.h
psample.h net: Introduce psample, a new genetlink channel for packet sampling 2017-01-24 13:44:28 -05:00
psci.h
ptp_clock.h
ptrace.h
qnx4_fs.h
qnxtypes.h
qrtr.h
quota.h
radeonfb.h
random.h
raw.h
rds.h uapi: fix linux/rds.h userspace compilation errors 2017-02-23 10:55:08 -05:00
reboot.h
reiserfs_fs.h
reiserfs_xattr.h
resource.h
rfkill.h
rio_cm_cdev.h
rio_mport_cdev.h
romfs_fs.h
rose.h
route.h
rpmsg.h rpmsg: Driver for user space endpoint interface 2017-01-18 10:43:15 -08:00
rtc.h
rtnetlink.h net: mpls: Add support for netconf 2017-02-20 11:13:37 -05:00
scc.h
sched.h
scif_ioctl.h
screen_info.h
sctp.h sctp: add support for generating stream ssn reset event notification 2017-02-19 18:17:59 -05:00
sdla.h
seccomp.h
securebits.h
sed-opal.h uapi: sed-opal fix IOW for activate lsp to use correct struct 2017-02-14 19:47:16 -07:00
seg6_genl.h
seg6_hmac.h ipv6: sr: add missing Kbuild export for header files 2017-01-16 14:47:21 -05:00
seg6_iptunnel.h uapi: fix linux/seg6.h and linux/seg6_iptunnel.h userspace compilation errors 2017-02-23 10:55:08 -05:00
seg6.h uapi: fix linux/seg6.h and linux/seg6_iptunnel.h userspace compilation errors 2017-02-23 10:55:08 -05:00
selinux_netlink.h
sem.h
serial_core.h serial: 8250: Add new port type for TI DA8xx/66AK2x 2017-01-12 11:51:25 +01:00
serial_reg.h serial: exar: Move register defines from uapi header to consumer site 2017-02-10 15:13:26 +01:00
serial.h
serio.h Input: psmouse - add a custom serio protocol to send extra information 2017-02-09 11:43:15 -08:00
shm.h
signal.h
signalfd.h
smc_diag.h smc: netlink interface for SMC sockets 2017-01-09 16:07:41 -05:00
smc.h smc: establish pnet table management 2017-01-09 16:07:38 -05:00
smiapp.h
snmp.h net: add LINUX_MIB_PFMEMALLOCDROP counter 2017-02-02 23:34:19 -05:00
sock_diag.h
socket.h
sockios.h
sonet.h
sonypi.h
sound.h
soundcard.h
stat.h statx: Add a system call to make enhanced file info available 2017-03-02 20:51:15 -05:00
stddef.h
stm.h
string.h
suspend_ioctls.h
swab.h
sync_file.h
synclink.h
sysctl.h
sysinfo.h
target_core_user.h uapi: fix linux/target_core_user.h userspace compilation errors 2017-02-18 21:44:59 -08:00
taskstats.h
tcp_metrics.h
tcp.h tcp: record pkts sent and retransmistted 2017-01-29 19:17:23 -05:00
telephony.h
termios.h
thermal.h
time.h
timerfd.h timerfd: export defines to userspace 2017-01-10 18:31:55 -08:00
times.h
timex.h
tiocl.h
tipc_config.h
tipc_netlink.h
tipc.h tipc: make replicast a user selectable option 2017-01-20 12:10:17 -05:00
toshiba.h
tty_flags.h
tty.h
types.h
udf_fs_i.h
udp.h
uhid.h
uinput.h
uio.h
uleds.h
ultrasound.h
un.h unix: add ioctl to open a unix socket file with O_PATH 2017-02-02 21:58:02 -05:00
unistd.h
unix_diag.h
usbdevice_fs.h
usbip.h
userfaultfd.h userfaultfd: non-cooperative: rollback userfaultfd_exit 2017-03-09 17:01:09 -08:00
userio.h
utime.h
utsname.h
uuid.h
uvcvideo.h
v4l2-common.h
v4l2-controls.h
v4l2-dv-timings.h
v4l2-mediabus.h
v4l2-subdev.h
veth.h
vfio.h
vhost.h
videodev2.h [media] videodev2.h: go back to limited range Y'CbCr for SRGB and, ADOBERGB 2017-02-13 14:33:56 -02:00
virtio_9p.h
virtio_balloon.h
virtio_blk.h
virtio_config.h
virtio_console.h
virtio_crypto.h
virtio_gpu.h
virtio_ids.h
virtio_input.h
virtio_mmio.h virtio_mmio: expose header to userspace 2017-02-27 16:31:23 +02:00
virtio_net.h
virtio_pci.h virtio_pci: don't duplicate the msix_enable flag in struct pci_dev 2017-02-27 20:54:03 +02:00
virtio_ring.h
virtio_rng.h
virtio_scsi.h
virtio_types.h
virtio_vsock.h
vm_sockets.h
vt.h
vtpm_proxy.h
wait.h
wanrouter.h
watchdog.h
wil6210_uapi.h
wimax.h
wireless.h
x25.h
xattr.h
xfrm.h
xilinx-v4l2-controls.h
zorro_ids.h
zorro.h