linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files
@ 2015-05-30 15:37 Mikko Rapeli
  2015-05-30 15:37 ` [PATCH 01/98] headers_install.sh: enhance error handling Mikko Rapeli
                   ` (98 more replies)
  0 siblings, 99 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:37 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli

v3:
tried to fix all v2 review findings
tried to guess how to fix a few more issue
with a few hacks, 0 files fail and 760 files pass the compile test on 32bit x86

v2:
https://lkml.org/lkml/2015/2/16/521
added cross compiler support with CROSS_COMPILE,
detecting libc and GCC headers from compiler,
more header file fixes

v1:
https://lkml.org/lkml/2014/8/21/665

Users of kernel header files would be happier if they did not contain
kernel specific parts and would contain #include statements for all
other header files that they depend on, and in general would compile.

This patch set introduces a compile test for headers exported to userspace
and then fixes many of the userspace header compilation failures.

Changes are also available in headers_test_v03 branch at github:
https://github.com/mcfrisk/linux/tree/headers_test_v03

The patch set includes some obvious hacks for which I'd like to get some
feedback and suggestions how to properly fix them.

Here's how to run the userspace compile tests:

$ make headers_install && cd usr/include && \
  ../../scripts/headers_compile_test.sh

Additionally tested an allyesconfig compilation on 32bit x86.

Mikko Rapeli (98):
  headers_install.sh: enhance error handling
  scripts/headers_compile_test.sh: compile test script for exported
    headers
  drm.h: use __kernel_size_t instead of size_t
  drm_mode.h: use __u32 and __u64 from linux/types.h
  exynos_drm.h: use __u64 from linux/types.h
  nouveau_drm.h: use __u32 and __u64 from linux/types.h
  radeon_drm.h: use __u32 and __u64 from linux/types.h
  r128_drm.h: include drm/drm.h
  via_drm.h: include linux/types.h instead of non-existing
    via_drmclient.h
  via_drm.h: hide struct via_file_private in userspace
  savage_drm.h: include <drm/drm.h>
  sis_drm.h: hide sis_file_private in userspace
  drm/i810_drm.h: include drm/drm.h
  include/uapi/drm/vmwgfx_drm.h: use __s32, __u32 and __u64 from
    linux/types.h
  include/uapi/drm/qxl_drm.h: use __s32, __u32 and __u64 from
    linux/types.h
  include/uapi/drm/msm_drm.h: use __s32, __s64, __u32 and __u64 from
    linux/types.h
  include/uapi/linux/agpgart.h: include stdlib.h in userspace
  include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP
    etc macros
  dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h
  hsi_char.h: use __u32 from linux/types.h
  include/uapi/linux/hsi/cs-protocol.h: include linux/time.h
  ebtables.h: use __u64 from linux/types.h
  cld.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
  rds.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
  sctp.h: use __u8 and __u32 from linux/types.h
  scsi_bsg_fc.h: use __u8, __u32 and __u64 from linux/types.h
  scsi_netlink.h: use __u8, __u16 and __u64 from linux/types.h
  scsi_netlink_fc.h: use __u16, __u32 and __u64 from linux/types.h
  scsi_netlink_fc.h: include stdint.h in userspace
  hdspm.h: use __u8, __u32 and __u64 from linux/types.h
  gntalloc.h: use __u16, __u32 and __u64 from linux/types.h
  gntdev.h: use __u32 and __u64 from linux/types.h
  include/uapi/linux/sysctl.h: use __kernel_size_t instead of size_t
  include/uapi/asm-generic/ipcbuf.h: include linux/posix_types.h
  include/uapi/asm-generic/msgbuf.h: include asm/ipcbuf.h
  include/uapi/asm-generic/shmbuf.h: include fixes
  asm-generic/sembuf.h: include asm/posix_types.h and asm/ipcbuf.h
  include/uapi/asm-generic/signal.h: use __kernel_size_t instead of
    size_t
  include/uapi/linux/socket.h: include sys/socket.h in userspace
  include/uapi/linux/rds.h: include linux/socket.h and linux/types.h
  include/uapi/linux/if_pppox.h: include linux/if.h
  include/uapi/linux/if_tunnel.h: include linux/if.h, linux/ip.h and
    linux/in6.h
  include/uapi/linux/hdlc/ioctl.h: include linux/if.h
  nf_conntrack_tuple_common.h: include linux/types.h and
    linux/netfilter.h
  include/uapi/linux/ipv6_route.h: include linux/in6.h
  include/uapi/linux/ipv6_route.h: include linux/in6.h
  include/uapi/linux/if_pppol2tp.h: include linux/in.h and linux/in6.h
  include/uapi/linux/if_pppox.h: include linux/in.h and linux/in6.h
  Break dependency loop between linux/if.h and linux/hdlc/ioctl.h
  include/uapi/linux/packet_diag.h: include linux/netdevice.h
  include/uapi/linux/llc.h: include linux/if.h
  include/uapi/linux/mqueue.h: include linux/types.h
  include/uapi/linux/mroute.h: include linux/in.h
  include/uapi/linux/dlm_netlink.h: include linux/dlmconstants.h
  include/uapi/linux/ip6_tunnel.h: include linux/if.h and linux/in6.h
  include/uapi/linux/netfilter.h: include in.h and in6.h
  include/uapi/linux/netfilter_bridge.h: include in.h
  include/uapi/linux/netfilter_ipv4/ip_tables.h: include linux/if.h
  include/uapi/linux/netfilter: include linux/if.h in several headers
  include/uapi/linux/netfilter/xt_osf.h: include linux/ip.h and
    linux/tcp.h
  include/uapi/linux/netfilter_ipv6/ip6t_rt.h: include linux/in6.h
  include/uapi/linux/netfilter_bridge/ebt_ip6.h: include linux/in6.h
  include/uapi/linux/netfilter/xt_policy.h: include linux/in.h and
    linux/in6.h
  include/uapi/linux/netfilter_bridge/ebt_arp.h: include
    linux/if_ether.h
  include/uapi/linux/netfilter_bridge/ebt_arpreply.h: include
    linux/if_ether.h
  include/uapi/linux/netfilter_bridge/ebt_nat.h: include
    linux/if_ether.h
  include/uapi/linux/netfilter/ipset/ip_set_bitmap.h: include
    linux/netfilter/ipset/ip_set.h
  include/uapi/linux/netfilter/ipset/ip_set_hash.h: include
    linux/netfilter/ipset/ip_set.h
  include/uapi/linux/netfilter/ipset/ip_set_list.h: include
    linux/netfilter/ipset/ip_set.h
  include/uapi/linux/netfilter/xt_HMARK.h: include linux/netfilter.h
  include/uapi/linux/netfilter/xt_TEE.h: include linux/netfilter.h
  include/uapi/linux/netfilter/xt_TPROXY.h: include linux/netfilter.h
  include/uapi/linux/netfilter/xt_ipvs.h: include linux/netfilter.h
  include/uapi/linux/netfilter/xt_mac.h: include linux/if_ether.h
  include/uapi/linux/netfilter/xt_sctp.h: use _Bool type, 1 for true and
    0 for false
  include/uapi/linux/netfilter/xt_recent.h: include linux/netfilter.h
  include/uapi/linux/errqueue.h: include linux/time.h
  include/uapi/asm-generic/ucontext.h: include asm/signal.h and
    asm/sigcontext.h
  arch/x86/include/uapi/asm/signal.h: use __kernel_size_t instead of
    size_t
  include/uapi/linux/auto_fs.h: include linux/limits.h
  include/uapi/linux/openvswitch.h: use __u32 from linux/types.h
  include/uapi/linux/target_core_user.h: use __u8, __u16, __u32 and
    __u64 from linux/types.h
  include/uapi/linux/omapfb.h: use __kernel_size_t instead of size_t
  include/uapi/linux/atm_zatm.h: include linux/time.h
  include/uapi/linux/scc.h: include linux/sockios.h
  include/uapi/linux/btrfs.h: define NULL
  include/uapi/linux/kexec.h: use __kernel_size_t instead of size_t
  include/uapi/linux/reiserfs_xattr.h: use __kernel_size_t instead of
    size_t
  include/uapi/linux/patchkey.h: change #error to #warning if file
    included directly
  include/uapi/linux/coda.h: use __kernel_pid_t and add u_short etc
    definitions for userspace
  include/uapi/linux/android/binder.h: use __kernel_pid_t and
    __kernel_uid_t
  arch/x86/include/uapi/asm/sembuf.h: include linux/types.h and
    linux/ipc.h
  include/uapi/linux/virtio_balloon.h: include linux/virtio_types.h
  HACK arch/x86/include/uapi/asm/sigcontext32.h: remove _fpx_sw_bytes
    from union
  HACK: fix include/uapi/xen/privcmd.h compilation in userspace
  HACK include/uapi/linux/coda_psdev.h: fix compilation in userspace
  HACK include/uapi/linux/elfcore.h: use __kernel_pid_t and remove
    elf_greg_t stuff in userspace
  HACK include/uapi/linux/errqueue.h: include time.h in userspace

 arch/x86/include/asm/pvclock-abi.h                 |  41 +-
 arch/x86/include/asm/xen/interface.h               | 185 +----
 arch/x86/include/asm/xen/interface_32.h            |  98 +--
 arch/x86/include/asm/xen/interface_64.h            | 144 +---
 arch/x86/include/uapi/asm/Kbuild                   |   2 +
 arch/x86/include/uapi/asm/pvclock-abi.h            |  47 ++
 arch/x86/include/uapi/asm/sembuf.h                 |   3 +
 arch/x86/include/uapi/asm/sigcontext32.h           |   1 -
 arch/x86/include/uapi/asm/signal.h                 |   2 +-
 arch/x86/include/uapi/asm/xen/Kbuild               |   5 +
 arch/x86/include/uapi/asm/xen/interface.h          | 198 ++++++
 arch/x86/include/uapi/asm/xen/interface_32.h       | 103 +++
 arch/x86/include/uapi/asm/xen/interface_64.h       | 150 ++++
 include/uapi/asm-generic/ipcbuf.h                  |   2 +
 include/uapi/asm-generic/msgbuf.h                  |   2 +
 include/uapi/asm-generic/sembuf.h                  |   2 +
 include/uapi/asm-generic/shmbuf.h                  |   4 +-
 include/uapi/asm-generic/signal.h                  |   2 +-
 include/uapi/asm-generic/ucontext.h                |   3 +
 include/uapi/drm/drm.h                             |   8 +-
 include/uapi/drm/drm_mode.h                        |  16 +-
 include/uapi/drm/exynos_drm.h                      |   7 +-
 include/uapi/drm/i810_drm.h                        |   2 +
 include/uapi/drm/msm_drm.h                         |  76 +--
 include/uapi/drm/nouveau_drm.h                     |  86 +--
 include/uapi/drm/qxl_drm.h                         |  74 +-
 include/uapi/drm/r128_drm.h                        |   2 +
 include/uapi/drm/radeon_drm.h                      | 129 ++--
 include/uapi/drm/savage_drm.h                      |   2 +
 include/uapi/drm/sis_drm.h                         |   2 +
 include/uapi/drm/via_drm.h                         |   6 +-
 include/uapi/drm/vmwgfx_drm.h                      | 260 +++----
 include/uapi/linux/agpgart.h                       |   1 +
 include/uapi/linux/android/binder.h                |   4 +-
 include/uapi/linux/atm_zatm.h                      |   1 +
 include/uapi/linux/auto_fs.h                       |   1 +
 include/uapi/linux/btrfs.h                         |   6 +
 include/uapi/linux/coda.h                          |  11 +-
 include/uapi/linux/coda_psdev.h                    |  13 +-
 include/uapi/linux/dlm_netlink.h                   |   1 +
 include/uapi/linux/dm-log-userspace.h              |  43 +-
 include/uapi/linux/elfcore.h                       |  14 +-
 include/uapi/linux/errqueue.h                      |   6 +
 include/uapi/linux/hdlc/ioctl.h                    |   4 +
 include/uapi/linux/hsi/cs-protocol.h               |   1 +
 include/uapi/linux/hsi/hsi_char.h                  |  17 +-
 include/uapi/linux/if.h                            |   4 +
 include/uapi/linux/if_pppol2tp.h                   |   3 +-
 include/uapi/linux/if_pppox.h                      |   3 +
 include/uapi/linux/if_tunnel.h                     |   3 +
 include/uapi/linux/ip6_tunnel.h                    |   2 +
 include/uapi/linux/ipv6_route.h                    |   1 +
 include/uapi/linux/kexec.h                         |   4 +-
 include/uapi/linux/llc.h                           |   1 +
 include/uapi/linux/mqueue.h                        |   2 +
 include/uapi/linux/mroute.h                        |   1 +
 include/uapi/linux/mroute6.h                       |   1 +
 include/uapi/linux/netfilter.h                     |   3 +-
 include/uapi/linux/netfilter/ipset/ip_set_bitmap.h |   2 +
 include/uapi/linux/netfilter/ipset/ip_set_hash.h   |   2 +
 include/uapi/linux/netfilter/ipset/ip_set_list.h   |   2 +
 .../linux/netfilter/nf_conntrack_tuple_common.h    |   3 +
 include/uapi/linux/netfilter/xt_HMARK.h            |   1 +
 include/uapi/linux/netfilter/xt_RATEEST.h          |   1 +
 include/uapi/linux/netfilter/xt_TEE.h              |   2 +
 include/uapi/linux/netfilter/xt_TPROXY.h           |   1 +
 include/uapi/linux/netfilter/xt_hashlimit.h        |   1 +
 include/uapi/linux/netfilter/xt_ipvs.h             |   1 +
 include/uapi/linux/netfilter/xt_mac.h              |   2 +
 include/uapi/linux/netfilter/xt_osf.h              |   2 +
 include/uapi/linux/netfilter/xt_physdev.h          |   2 +-
 include/uapi/linux/netfilter/xt_policy.h           |   2 +
 include/uapi/linux/netfilter/xt_rateest.h          |   1 +
 include/uapi/linux/netfilter/xt_recent.h           |   1 +
 include/uapi/linux/netfilter/xt_sctp.h             |  12 +-
 include/uapi/linux/netfilter_arp/arp_tables.h      |   1 +
 include/uapi/linux/netfilter_bridge.h              |   1 +
 include/uapi/linux/netfilter_bridge/ebt_arp.h      |   1 +
 include/uapi/linux/netfilter_bridge/ebt_arpreply.h |   2 +
 include/uapi/linux/netfilter_bridge/ebt_ip6.h      |   1 +
 include/uapi/linux/netfilter_bridge/ebt_nat.h      |   2 +
 include/uapi/linux/netfilter_bridge/ebtables.h     |   6 +-
 include/uapi/linux/netfilter_ipv4/ip_tables.h      |   1 +
 include/uapi/linux/netfilter_ipv6/ip6_tables.h     |   1 +
 include/uapi/linux/netfilter_ipv6/ip6t_rt.h        |   2 +-
 include/uapi/linux/nfsd/cld.h                      |  14 +-
 include/uapi/linux/omapfb.h                        |   2 +-
 include/uapi/linux/openvswitch.h                   |   4 +-
 include/uapi/linux/packet_diag.h                   |   1 +
 include/uapi/linux/patchkey.h                      |   2 +-
 include/uapi/linux/rds.h                           | 103 +--
 include/uapi/linux/reiserfs_xattr.h                |   2 +-
 include/uapi/linux/scc.h                           |   1 +
 include/uapi/linux/sctp.h                          |   8 +-
 include/uapi/linux/socket.h                        |   4 +
 include/uapi/linux/sysctl.h                        |   4 +-
 include/uapi/linux/target_core_user.h              |  22 +-
 include/uapi/linux/virtio_balloon.h                |   1 +
 include/uapi/scsi/scsi_bsg_fc.h                    |  54 +-
 include/uapi/scsi/scsi_netlink.h                   |  22 +-
 include/uapi/scsi/scsi_netlink_fc.h                |  21 +-
 include/uapi/sound/emu10k1.h                       |  23 +-
 include/uapi/sound/hdspm.h                         |  40 +-
 include/uapi/xen/Kbuild                            |   1 +
 include/uapi/xen/gntalloc.h                        |  22 +-
 include/uapi/xen/gntdev.h                          |  34 +-
 include/uapi/xen/interface/Kbuild                  |   2 +
 include/uapi/xen/interface/xen.h                   | 759 +++++++++++++++++++++
 include/xen/interface/xen.h                        | 754 +-------------------
 scripts/headers_compile_test.sh                    | 143 ++++
 scripts/headers_install.sh                         |  14 +-
 111 files changed, 2142 insertions(+), 1786 deletions(-)
 create mode 100644 arch/x86/include/uapi/asm/pvclock-abi.h
 create mode 100644 arch/x86/include/uapi/asm/xen/Kbuild
 create mode 100644 arch/x86/include/uapi/asm/xen/interface.h
 create mode 100644 arch/x86/include/uapi/asm/xen/interface_32.h
 create mode 100644 arch/x86/include/uapi/asm/xen/interface_64.h
 create mode 100644 include/uapi/xen/interface/Kbuild
 create mode 100644 include/uapi/xen/interface/xen.h
 create mode 100755 scripts/headers_compile_test.sh

-- 
2.1.4


^ permalink raw reply	[flat|nested] 143+ messages in thread

* [PATCH 01/98] headers_install.sh: enhance error handling
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
@ 2015-05-30 15:37 ` Mikko Rapeli
  2015-05-30 15:37 ` [PATCH 02/98] scripts/headers_compile_test.sh: compile test script for exported headers Mikko Rapeli
                   ` (97 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:37 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Michal Marek, Javier Barrio, Andrew Morton

Exit with error if using undefined variables or if any sub command fails
with error return value. unidef needs special handling since but this can
be done without the trap. Enables exaniming intermediate files if some
commands failed.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 scripts/headers_install.sh | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh
index fdebd66..fe22807 100755
--- a/scripts/headers_install.sh
+++ b/scripts/headers_install.sh
@@ -1,4 +1,6 @@
 #!/bin/sh
+set -e
+set -u
 
 if [ $# -lt 2 ]
 then
@@ -26,7 +28,6 @@ shift
 # Iterate through files listed on command line
 
 FILE=
-trap 'rm -f "$OUTDIR/$FILE" "$OUTDIR/$FILE.sed"' EXIT
 for i in "$@"
 do
 	FILE="$(basename "$i")"
@@ -37,10 +38,13 @@ do
 		-e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \
 		-e 's/(^|[ \t(])(inline|asm|volatile)([ \t(]|$)/\1__\2__\3/g' \
 		-e 's@#(ifndef|define|endif[ \t]*/[*])[ \t]*_UAPI@#\1 @' \
-		"$SRCDIR/$i" > "$OUTDIR/$FILE.sed" || exit 1
+		"$SRCDIR/$i" > "$OUTDIR/$FILE.sed" || \
+		( rm -f "$OUTDIR/$FILE.sed" ; exit 1 )
 	scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \
-		> "$OUTDIR/$FILE"
-	[ $? -gt 1 ] && exit 1
+		> "$OUTDIR/$FILE" || \
+		( if [ $? -gt 1 ]; then \
+				rm -f "$OUTDIR/$FILE" "$OUTDIR/$FILE.sed" ; \
+				exit 1 ; \
+		  fi )
 	rm -f "$OUTDIR/$FILE.sed"
 done
-trap - EXIT
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 02/98] scripts/headers_compile_test.sh: compile test script for exported headers
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
  2015-05-30 15:37 ` [PATCH 01/98] headers_install.sh: enhance error handling Mikko Rapeli
@ 2015-05-30 15:37 ` Mikko Rapeli
  2015-05-30 15:37 ` [PATCH 03/98] drm.h: use __kernel_size_t instead of size_t Mikko Rapeli
                   ` (96 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:37 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli

Users of kernel header files would be happier if they did not contain
kernel specific parts and would contain #include statements for all
other header files that they depend on, and in general would compile.

For each header file exported to userspace, this script creates
a simple .c file which just includes the header file. Then it
tries to compile it together with minimal header files from GCC
and libc, and reports results.

Default libc and GCC header file locations are parsed from compiler
configuration.

Kernel headers depend on GCC headers so their path is included in
the test compiler command line.

Some gcc and kernel headers depend on libc headers which are made available
by copying from the compiler default location to a temporary location and
removing possibly existing kernel headers from this directory. This is a bit
of a hack but seems to work in multiple environments.

Tested natively on:

Debian unstable, i586-linux-gnu and gcc 4.9.2
Raspbian Wheezy, arm-linux-gnueabihf and gcc 4.6.3
Ubuntu 12.04 LTS, x86_64-linux-gnu and gcc 4.6.3

Tested cross compilation using standard CROSS_COMPILE=/path/to/gcc with:

arm-linux-gnueabihf-gcc (crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro GCC 4.9-2014.09) 4.9.2 20140904 (prerelease)

Execute the script in the directory where kernel header files are installed.
For example:

$ make headers_install
$ cd usr/include
$ ../../scripts/headers_compile_test.sh

Example statistics from 3.18.4 kernel:

130 files failed the compile test.
609 files passed the compile test.

Example error types from 3.18.4 kernel:

$ ../../scripts/headers_compile_test.sh 2>&1 | \
grep error: | sed -e 's/.*error://g' | sort | uniq -c | sort -rn

    352  unknown type name ‘uint32_t’
    134  unknown type name ‘uint64_t’
    103  unknown type name ‘size_t’
     43  unknown type name ‘__kernel_ulong_t’
     38  unknown type name ‘uint8_t’
     24  unknown type name ‘int32_t’
     22  field ‘addr’ has incomplete type
     18  field ‘tstamp’ has incomplete type
     16  unknown type name ‘__kernel_time_t’
     16  field ‘in’ has incomplete type
     16  field ‘in6’ has incomplete type
     14  unknown type name ‘__be16’
     13  ‘IFNAMSIZ’ undeclared here (not in a function)
     12  unknown type name ‘uint16_t’
      9  field ‘ifru_netmask’ has incomplete type
      9  field ‘ifru_hwaddr’ has incomplete type
      9  field ‘ifru_dstaddr’ has incomplete type
      9  field ‘ifru_broadaddr’ has incomplete type
      9  field ‘ifru_addr’ has incomplete type
      8  unknown type name ‘__kernel_pid_t’
      7  unknown type name ‘u_short’
      7  unknown type name ‘pid_t’
      6  invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
      6  field ‘src’ has incomplete type
      6  field ‘audio_tstamp’ has incomplete type
      6  array type has incomplete element type
      5  unknown type name ‘__kernel_long_t’
      5  requested alignment is not an integer constant
      5  field ‘smsk’ has incomplete type
      4  unknown type name ‘__kernel_uid32_t’
      4  unknown type name ‘__kernel_gid32_t’
      4  ‘ETH_ALEN’ undeclared here (not in a function)
      3  unknown type name ‘int64_t’
      3  unknown type name ‘caddr_t’
      3  ‘IPSET_ERR_TYPE_SPECIFIC’ undeclared here (not in a function)
      3  field ‘trigger_tstamp’ has incomplete type
      3  field ‘src_addr’ has incomplete type
      3  field ‘sin_addr’ has incomplete type
      3  field ‘laddr’ has incomplete type
      3  field ‘id’ has incomplete type
      3  field ‘dmsk’ has incomplete type
      3  field ‘bssid’ has incomplete type
      3  expected specifier-qualifier-list before ‘uint64_t’
      2  unknown type name ‘u_long’
      2  unknown type name ‘stack_t’
      2  unknown type name ‘sigset_t’
      2  unknown type name ‘sa_family_t’
      2  unknown type name ‘__kernel_mode_t’
      2  unknown type name ‘__kernel_key_t’
      2  unknown type name ‘elf_gregset_t’
      2  unknown type name ‘bool’
      2  ‘uint64_t’ undeclared here (not in a function)
      2  ‘true’ undeclared (first use in this function)
      2  ‘NAME_MAX’ undeclared here (not in a function)
      2  ‘__kernel_mode_t’ undeclared here (not in a function)
      2  invalid application of ‘sizeof’ to incomplete type ‘struct sockaddr’
      2  field ‘uc_mcontext’ has incomplete type
      2  field ‘tmsk’ has incomplete type
      2  field ‘tgt’ has incomplete type
      2  field ‘shm_perm’ has incomplete type
      2  field ‘sem_perm’ has incomplete type
      2  field ‘raddr’ has incomplete type
      2  field ‘msg_perm’ has incomplete type
      2  field ‘grp’ has incomplete type
      2  field ‘dst’ has incomplete type
      2  field ‘dst_addr’ has incomplete type
      2  field ‘arp_pa’ has incomplete type
      2  field ‘arp_netmask’ has incomplete type
      2  field ‘arp_ha’ has incomplete type
      2  ‘false’ undeclared (first use in this function)
      1  xen/interface/xen.h: No such file or directory
      1  via_drmclient.h: No such file or directory
      1  unknown type name ‘wait_queue_head_t’
      1  unknown type name ‘snd_seq_client_type_t’
      1  unknown type name ‘int16_t’
      1  unknown type name ‘ino_t’
      1  unknown type name ‘elf_greg_t’
      1  unknown type name ‘elf_fpxregset_t’
      1  unknown type name ‘elf_fpregset_t’
      1  unknown type name ‘__be32’
      1  ‘SIOCDEVPRIVATE’ undeclared here (not in a function)
      1  ‘sa_family_t’ undeclared here (not in a function)
      1  ‘NULL’ undeclared (first use in this function)
      1  ‘MSG_FIN’ undeclared here (not in a function)
      1  ‘MAX_IPOPTLEN’ undeclared here (not in a function)
      1  ‘MAX_ADDR_LEN’ undeclared here (not in a function)
      1  ‘IFHWADDRLEN’ undeclared here (not in a function)
      1  field ‘vmask’ has incomplete type
      1  field ‘vifc_rmt_addr’ has incomplete type
      1  field ‘vifc_lcl_addr’ has incomplete type
      1  field ‘vaddr’ has incomplete type
      1  field ‘uc_chain’ has incomplete type
      1  field ‘tgt_ip’ has incomplete type
      1  field ‘tcp’ has incomplete type
      1  field ‘sw_reserved’ has incomplete type
      1  field ‘sspp_addr’ has incomplete type
      1  field ‘ssp_addr’ has incomplete type
      1  field ‘src_mask’ has incomplete type
      1  field ‘src_ip’ has incomplete type
      1  field ‘spt_address’ has incomplete type
      1  field ‘spp_address’ has incomplete type
      1  field ‘spinfo_address’ has incomplete type
      1  field ‘spc_aaddr’ has incomplete type
      1  field ‘sas_obs_rto_ipaddr’ has incomplete type
      1  field ‘saddr’ has incomplete type
      1  field ‘rtmsg_src’ has incomplete type
      1  field ‘rtmsg_gateway’ has incomplete type
      1  field ‘rtmsg_dst’ has incomplete type
      1  field ‘rt_genmask’ has incomplete type
      1  field ‘rt_gateway’ has incomplete type
      1  field ‘rt_dst’ has incomplete type
      1  field ‘real’ has incomplete type
      1  field ‘prefix’ has incomplete type
      1  field ‘obj_list’ has incomplete type
      1  field ‘mfcc_origin’ has incomplete type
      1  field ‘mfcc_mcastgrp’ has incomplete type
      1  field ‘mf6cc_origin’ has incomplete type
      1  field ‘mf6cc_mcastgrp’ has incomplete type
      1  field ‘mask’ has incomplete type
      1  field ‘ival2’ has incomplete type
      1  field ‘ival1’ has incomplete type
      1  field ‘iph’ has incomplete type
      1  field ‘ip’ has incomplete type
      1  field ‘im_src’ has incomplete type
      1  field ‘im_dst’ has incomplete type
      1  field ‘im6_src’ has incomplete type
      1  field ‘im6_dst’ has incomplete type
      1  field ‘gw’ has incomplete type
      1  field ‘expected’ has incomplete type
      1  field ‘dst_mask’ has incomplete type
      1  field ‘dest_addr’ has incomplete type
      1  field ‘daddr’ has incomplete type
      1  field ‘ap_addr’ has incomplete type
      1  field ‘a6’ has incomplete type
      1  field ‘a4’ has incomplete type
      1  expected specifier-qualifier-list before ‘DECLARE_BITMAP’
      1  expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘snd_seq_client_type_t’
      1  #error "patchkey.h included directly"
      1  ‘DLM_RESNAME_MAXLEN’ undeclared here (not in a function)

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 scripts/headers_compile_test.sh | 143 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 143 insertions(+)
 create mode 100755 scripts/headers_compile_test.sh

diff --git a/scripts/headers_compile_test.sh b/scripts/headers_compile_test.sh
new file mode 100755
index 0000000..9a73945
--- /dev/null
+++ b/scripts/headers_compile_test.sh
@@ -0,0 +1,143 @@
+#!/bin/bash
+# bash due to arithmetics and pipefail
+set -euo pipefail
+
+# Debugging
+#set -x
+
+echo Simple compile test for header files meant for userspace.
+
+# sanity test
+if [ ! -d ./linux ]; then
+	echo Sanity check error: ./linux directory not found
+	echo Should be called in usr/include after \'make headers_install\'.
+	echo Returns number of failed files, 0 if none.
+	exit 1
+fi
+
+# Support CC variable for compiler and ccache, and cross compiling.
+# CC is used without quotes to support CC="ccache gcc".
+set +u
+if [ "$CC"foobar == "foobar" ]; then
+	CC=cc
+fi
+
+if [ "$CROSS_COMPILE"foobar != "foobar" ]; then
+	# Using gcc name since some cross compiler tool chains don't provide
+	# the cc symlink
+	CC="$CROSS_COMPILE"gcc
+fi
+set -u
+
+# Kernel headers refer to some gcc and libc headers so make them available.
+set +u
+if [ "$ARCH_TRIPLET"foobar == "foobar" ]; then
+	# Taking triplet from gcc/cpp
+	ARCH_TRIPLET="$( $CC -v -x c -E - < /dev/null 2>&1 | \
+			grep Target | sed -e 's/Target: //' )"
+fi
+
+if [ "$LIBC"foobar == "foobar" ]; then
+	# trying to grep libc includes from gcc/cpp defaults
+	_TEMP="$( $CC -v -x c -E - < /dev/null 2>&1 | \
+		sed -n -e '/^#include <...> search starts here:$/,/^End of search list.$/{//!p}' | \
+		sed -e 's/^\ \//\//g' | \
+		grep '/usr/include' )"
+
+	# sanity check and prepare LIBC dirs
+	for d in $_TEMP; do
+		if [ ! -d "$d" ]; then
+			echo "$d not a directory"
+			exit 1
+		fi
+		LIBC="$LIBC $d"
+	done
+fi
+set -u
+
+# Copy libc include files to temp directory for the tests.
+
+COMPILE_TEST_INC=../headers_compile_test_include
+rm -rf "$COMPILE_TEST_INC"
+mkdir -p "$COMPILE_TEST_INC"
+
+for d in $LIBC; do
+	# check if last part of dir is the arch triplet, cross compile paths
+	# can have it also elsewhere so just the last one counts.
+	if !( echo "$d" | egrep "$ARCH_TRIPLET$" > /dev/null ); then
+		# hopefully just main libc dir, e.g. /usr/include
+		cp -a "$d"/* "$COMPILE_TEST_INC"/
+	elif ( echo "$d" | egrep "$ARCH_TRIPLET$" > /dev/null ); then
+		# hopefully the arch specific dir, e.g. /usr/include/x86_64-linux-gnu
+		cp -ar "$d"/* "$COMPILE_TEST_INC/"
+	else
+		echo "$d unexpected, bailing out"
+		exit 1
+	fi
+done
+
+# Simulate libc headers without kernel headers by removing
+# all known kernel header dirs from the copied libc ones.
+# This seems to magically work.
+_KERNEL_DIRS="$( find . -type d | grep -v '^\.$' )"
+( cd "$COMPILE_TEST_INC" && rm -rf $_KERNEL_DIRS )
+
+# GCC headers
+set +u
+if [ "$GCC_INC"foobar == "foobar" ]; then
+	# Take from $CC default system include paths, filter out
+	# /usr/local/include and /usr/include stuff first, then try to match
+	# for gcc.
+	_TEMP="$( $CC -v -x c -E - < /dev/null 2>&1 | \
+		sed -n -e '/^#include <...> search starts here:$/,/^End of search list.$/{//!p}' | \
+		sed -e 's/^\ \//\//g' | \
+		egrep -v '/usr/local/include' | \
+		egrep -v '/usr/include' | \
+		grep gcc | \
+		xargs )"
+
+	# merge and prepare for use with $CC
+	for d in $_TEMP; do
+		# sanity test
+		if [ ! -d "$d" ]; then
+			echo "$d: is not a directory"
+			exit 1
+		fi
+		GCC_INC="$GCC_INC -I $d"
+	done
+fi
+set -u
+
+# For each header file, create a .c which includes the header file
+# and try to compile it using only current directory for searching other
+# included header files.
+_FAILED=0
+_PASSED=0
+for f in $( find . -name "*\.h" | xargs ); do
+	_FAIL=0
+	CFILE="$( echo "$( dirname "$f" )"/"$( basename "$f" .h )".c )"
+
+	# create .c file
+	echo "#include <"$( echo "$f" | sed -e 's|^.\/||' )">" \
+		> "$(dirname "$f")"/"$(basename "$f" .h)".c
+
+	# compile test, CC not quoted to support ccache
+	echo $CC -Wall -c -nostdinc $GCC_INC -I . -I "$COMPILE_TEST_INC" -I "$COMPILE_TEST_INC/$ARCH_TRIPLET" "$CFILE"
+	$CC -Wall -c -nostdinc $GCC_INC -I . -I "$COMPILE_TEST_INC" -I "$COMPILE_TEST_INC/$ARCH_TRIPLET" "$CFILE" \
+		|| _FAIL=1
+
+	# report errors
+	if [ "$_FAIL" -gt 0 ]; then
+		echo "FAILED: $f"
+		_FAILED="$(( $_FAILED + 1 ))"
+	else
+		echo "PASSED: $f"
+		_PASSED="$(( $_PASSED + 1))"
+	fi
+done
+
+echo Statistics:
+echo "$_FAILED files failed the compile test."
+echo "$_PASSED files passed the compile test."
+
+exit "$_FAILED"
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 03/98] drm.h: use __kernel_size_t instead of size_t
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
  2015-05-30 15:37 ` [PATCH 01/98] headers_install.sh: enhance error handling Mikko Rapeli
  2015-05-30 15:37 ` [PATCH 02/98] scripts/headers_compile_test.sh: compile test script for exported headers Mikko Rapeli
@ 2015-05-30 15:37 ` Mikko Rapeli
  2015-06-03 17:19   ` Emil Velikov
  2015-05-30 15:37 ` [PATCH 04/98] drm_mode.h: use __u32 and __u64 from linux/types.h Mikko Rapeli
                   ` (95 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:37 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David Airlie, dri-devel, linux-api

Fixes userspace compilation error:

drm/drm.h:132:2: error: unknown type name ‘size_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/drm.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h
index ff6ef62..b197650 100644
--- a/include/uapi/drm/drm.h
+++ b/include/uapi/drm/drm.h
@@ -129,11 +129,11 @@ struct drm_version {
 	int version_major;	  /**< Major version */
 	int version_minor;	  /**< Minor version */
 	int version_patchlevel;	  /**< Patch level */
-	size_t name_len;	  /**< Length of name buffer */
+	__kernel_size_t name_len;	  /**< Length of name buffer */
 	char __user *name;	  /**< Name of driver */
-	size_t date_len;	  /**< Length of date buffer */
+	__kernel_size_t date_len;	  /**< Length of date buffer */
 	char __user *date;	  /**< User-space buffer to hold date */
-	size_t desc_len;	  /**< Length of desc buffer */
+	__kernel_size_t desc_len;	  /**< Length of desc buffer */
 	char __user *desc;	  /**< User-space buffer to hold desc */
 };
 
@@ -143,7 +143,7 @@ struct drm_version {
  * \sa drmGetBusid() and drmSetBusId().
  */
 struct drm_unique {
-	size_t unique_len;	  /**< Length of unique */
+	__kernel_size_t unique_len;	  /**< Length of unique */
 	char __user *unique;	  /**< Unique name for driver instantiation */
 };
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 04/98] drm_mode.h: use __u32 and __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (2 preceding siblings ...)
  2015-05-30 15:37 ` [PATCH 03/98] drm.h: use __kernel_size_t instead of size_t Mikko Rapeli
@ 2015-05-30 15:37 ` Mikko Rapeli
  2015-05-30 19:58   ` Frans Klaver
  2015-05-30 15:37 ` [PATCH 05/98] exynos_drm.h: use " Mikko Rapeli
                   ` (94 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:37 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David Airlie, dri-devel, linux-api

Fixes userspace compilation error:

drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/drm_mode.h | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
index dbeba94..03e4d75 100644
--- a/include/uapi/drm/drm_mode.h
+++ b/include/uapi/drm/drm_mode.h
@@ -508,14 +508,14 @@ struct drm_mode_crtc_page_flip {
 
 /* create a dumb scanout buffer */
 struct drm_mode_create_dumb {
-	uint32_t height;
-	uint32_t width;
-	uint32_t bpp;
-	uint32_t flags;
+	__u32 height;
+	__u32 width;
+	__u32 bpp;
+	__u32 flags;
 	/* handle, pitch, size will be returned */
-	uint32_t handle;
-	uint32_t pitch;
-	uint64_t size;
+	__u32 handle;
+	__u32 pitch;
+	__u64 size;
 };
 
 /* set up for mmap of a dumb scanout buffer */
@@ -532,7 +532,7 @@ struct drm_mode_map_dumb {
 };
 
 struct drm_mode_destroy_dumb {
-	uint32_t handle;
+	__u32 handle;
 };
 
 /* page-flip flags are valid, plus: */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 05/98] exynos_drm.h: use __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (3 preceding siblings ...)
  2015-05-30 15:37 ` [PATCH 04/98] drm_mode.h: use __u32 and __u64 from linux/types.h Mikko Rapeli
@ 2015-05-30 15:37 ` Mikko Rapeli
  2015-05-30 16:46   ` Russell King - ARM Linux
  2015-05-30 15:37 ` [PATCH 06/98] nouveau_drm.h: use __u32 and " Mikko Rapeli
                   ` (93 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:37 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Inki Dae, Joonyoung Shim, Seung-Woo Kim,
	Kyungmin Park, David Airlie, Kukjin Kim, Krzysztof Kozlowski,
	dri-devel, linux-api, linux-arm-kernel, linux-samsung-soc

Fixes userspace compilation error:

drm/exynos_drm.h:30:2: error: unknown type name ‘uint64_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/exynos_drm.h | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/include/uapi/drm/exynos_drm.h b/include/uapi/drm/exynos_drm.h
index 5575ed1..c4468f9 100644
--- a/include/uapi/drm/exynos_drm.h
+++ b/include/uapi/drm/exynos_drm.h
@@ -15,6 +15,7 @@
 #ifndef _UAPI_EXYNOS_DRM_H_
 #define _UAPI_EXYNOS_DRM_H_
 
+#include <linux/types.h>
 #include <drm/drm.h>
 
 /**
@@ -27,7 +28,7 @@
  *	- this handle will be set by gem module of kernel side.
  */
 struct drm_exynos_gem_create {
-	uint64_t size;
+	__u64 size;
 	unsigned int flags;
 	unsigned int handle;
 };
@@ -44,7 +45,7 @@ struct drm_exynos_gem_create {
 struct drm_exynos_gem_info {
 	unsigned int handle;
 	unsigned int flags;
-	uint64_t size;
+	__u64 size;
 };
 
 /**
@@ -58,7 +59,7 @@ struct drm_exynos_gem_info {
 struct drm_exynos_vidi_connection {
 	unsigned int connection;
 	unsigned int extensions;
-	uint64_t edid;
+	__u64 edid;
 };
 
 /* memory type definitions. */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 06/98] nouveau_drm.h: use __u32 and __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (4 preceding siblings ...)
  2015-05-30 15:37 ` [PATCH 05/98] exynos_drm.h: use " Mikko Rapeli
@ 2015-05-30 15:37 ` Mikko Rapeli
  2015-05-30 15:37 ` [PATCH 07/98] radeon_drm.h: " Mikko Rapeli
                   ` (92 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:37 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David Airlie, dri-devel, linux-api

Fixes userspace compilation errors like:

drm/nouveau_drm.h:41:2: error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/nouveau_drm.h | 86 +++++++++++++++++++++---------------------
 1 file changed, 44 insertions(+), 42 deletions(-)

diff --git a/include/uapi/drm/nouveau_drm.h b/include/uapi/drm/nouveau_drm.h
index 5507eea..638aa50 100644
--- a/include/uapi/drm/nouveau_drm.h
+++ b/include/uapi/drm/nouveau_drm.h
@@ -35,6 +35,8 @@
 #define NOUVEAU_ABI16_DEVICE   0xdddddddd
 #define NOUVEAU_ABI16_CHAN(n) (0xcccc0000 | (n))
 
+#include <linux/types.h>
+
 #define NOUVEAU_GEM_DOMAIN_CPU       (1 << 0)
 #define NOUVEAU_GEM_DOMAIN_VRAM      (1 << 1)
 #define NOUVEAU_GEM_DOMAIN_GART      (1 << 2)
@@ -49,34 +51,34 @@
 #define NOUVEAU_GEM_TILE_NONCONTIG   0x00000008
 
 struct drm_nouveau_gem_info {
-	uint32_t handle;
-	uint32_t domain;
-	uint64_t size;
-	uint64_t offset;
-	uint64_t map_handle;
-	uint32_t tile_mode;
-	uint32_t tile_flags;
+	__u32 handle;
+	__u32 domain;
+	__u64 size;
+	__u64 offset;
+	__u64 map_handle;
+	__u32 tile_mode;
+	__u32 tile_flags;
 };
 
 struct drm_nouveau_gem_new {
 	struct drm_nouveau_gem_info info;
-	uint32_t channel_hint;
-	uint32_t align;
+	__u32 channel_hint;
+	__u32 align;
 };
 
 #define NOUVEAU_GEM_MAX_BUFFERS 1024
 struct drm_nouveau_gem_pushbuf_bo_presumed {
-	uint32_t valid;
-	uint32_t domain;
-	uint64_t offset;
+	__u32 valid;
+	__u32 domain;
+	__u64 offset;
 };
 
 struct drm_nouveau_gem_pushbuf_bo {
-	uint64_t user_priv;
-	uint32_t handle;
-	uint32_t read_domains;
-	uint32_t write_domains;
-	uint32_t valid_domains;
+	__u64 user_priv;
+	__u32 handle;
+	__u32 read_domains;
+	__u32 write_domains;
+	__u32 valid_domains;
 	struct drm_nouveau_gem_pushbuf_bo_presumed presumed;
 };
 
@@ -85,46 +87,46 @@ struct drm_nouveau_gem_pushbuf_bo {
 #define NOUVEAU_GEM_RELOC_OR   (1 << 2)
 #define NOUVEAU_GEM_MAX_RELOCS 1024
 struct drm_nouveau_gem_pushbuf_reloc {
-	uint32_t reloc_bo_index;
-	uint32_t reloc_bo_offset;
-	uint32_t bo_index;
-	uint32_t flags;
-	uint32_t data;
-	uint32_t vor;
-	uint32_t tor;
+	__u32 reloc_bo_index;
+	__u32 reloc_bo_offset;
+	__u32 bo_index;
+	__u32 flags;
+	__u32 data;
+	__u32 vor;
+	__u32 tor;
 };
 
 #define NOUVEAU_GEM_MAX_PUSH 512
 struct drm_nouveau_gem_pushbuf_push {
-	uint32_t bo_index;
-	uint32_t pad;
-	uint64_t offset;
-	uint64_t length;
+	__u32 bo_index;
+	__u32 pad;
+	__u64 offset;
+	__u64 length;
 };
 
 struct drm_nouveau_gem_pushbuf {
-	uint32_t channel;
-	uint32_t nr_buffers;
-	uint64_t buffers;
-	uint32_t nr_relocs;
-	uint32_t nr_push;
-	uint64_t relocs;
-	uint64_t push;
-	uint32_t suffix0;
-	uint32_t suffix1;
-	uint64_t vram_available;
-	uint64_t gart_available;
+	__u32 channel;
+	__u32 nr_buffers;
+	__u64 buffers;
+	__u32 nr_relocs;
+	__u32 nr_push;
+	__u64 relocs;
+	__u64 push;
+	__u32 suffix0;
+	__u32 suffix1;
+	__u64 vram_available;
+	__u64 gart_available;
 };
 
 #define NOUVEAU_GEM_CPU_PREP_NOWAIT                                  0x00000001
 #define NOUVEAU_GEM_CPU_PREP_WRITE                                   0x00000004
 struct drm_nouveau_gem_cpu_prep {
-	uint32_t handle;
-	uint32_t flags;
+	__u32 handle;
+	__u32 flags;
 };
 
 struct drm_nouveau_gem_cpu_fini {
-	uint32_t handle;
+	__u32 handle;
 };
 
 #define DRM_NOUVEAU_GETPARAM           0x00 /* deprecated */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 07/98] radeon_drm.h: use __u32 and __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (5 preceding siblings ...)
  2015-05-30 15:37 ` [PATCH 06/98] nouveau_drm.h: use __u32 and " Mikko Rapeli
@ 2015-05-30 15:37 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 08/98] r128_drm.h: include drm/drm.h Mikko Rapeli
                   ` (91 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:37 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Alex Deucher, Christian König, David Airlie,
	dri-devel, linux-api

Fixes userspace compiler error:

drm/radeon_drm.h:794:2: error: unknown type name ‘uint64_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/radeon_drm.h | 129 +++++++++++++++++++++---------------------
 1 file changed, 65 insertions(+), 64 deletions(-)

diff --git a/include/uapi/drm/radeon_drm.h b/include/uapi/drm/radeon_drm.h
index 871e73f..5127092 100644
--- a/include/uapi/drm/radeon_drm.h
+++ b/include/uapi/drm/radeon_drm.h
@@ -33,6 +33,7 @@
 #ifndef __RADEON_DRM_H__
 #define __RADEON_DRM_H__
 
+#include <linux/types.h>
 #include <drm/drm.h>
 
 /* WARNING: If you change any of these defines, make sure to change the
@@ -793,9 +794,9 @@ typedef struct drm_radeon_surface_free {
 #define RADEON_GEM_DOMAIN_VRAM		0x4
 
 struct drm_radeon_gem_info {
-	uint64_t	gart_size;
-	uint64_t	vram_size;
-	uint64_t	vram_visible;
+	__u64	gart_size;
+	__u64	vram_size;
+	__u64	vram_visible;
 };
 
 #define RADEON_GEM_NO_BACKING_STORE	(1 << 0)
@@ -807,11 +808,11 @@ struct drm_radeon_gem_info {
 #define RADEON_GEM_NO_CPU_ACCESS	(1 << 4)
 
 struct drm_radeon_gem_create {
-	uint64_t	size;
-	uint64_t	alignment;
-	uint32_t	handle;
-	uint32_t	initial_domain;
-	uint32_t	flags;
+	__u64	size;
+	__u64	alignment;
+	__u32	handle;
+	__u32	initial_domain;
+	__u32	flags;
 };
 
 /*
@@ -825,10 +826,10 @@ struct drm_radeon_gem_create {
 #define RADEON_GEM_USERPTR_REGISTER	(1 << 3)
 
 struct drm_radeon_gem_userptr {
-	uint64_t		addr;
-	uint64_t		size;
-	uint32_t		flags;
-	uint32_t		handle;
+	__u64		addr;
+	__u64		size;
+	__u32		flags;
+	__u32		handle;
 };
 
 #define RADEON_TILING_MACRO				0x1
@@ -850,72 +851,72 @@ struct drm_radeon_gem_userptr {
 #define RADEON_TILING_EG_STENCIL_TILE_SPLIT_MASK	0xf
 
 struct drm_radeon_gem_set_tiling {
-	uint32_t	handle;
-	uint32_t	tiling_flags;
-	uint32_t	pitch;
+	__u32	handle;
+	__u32	tiling_flags;
+	__u32	pitch;
 };
 
 struct drm_radeon_gem_get_tiling {
-	uint32_t	handle;
-	uint32_t	tiling_flags;
-	uint32_t	pitch;
+	__u32	handle;
+	__u32	tiling_flags;
+	__u32	pitch;
 };
 
 struct drm_radeon_gem_mmap {
-	uint32_t	handle;
-	uint32_t	pad;
-	uint64_t	offset;
-	uint64_t	size;
-	uint64_t	addr_ptr;
+	__u32	handle;
+	__u32	pad;
+	__u64	offset;
+	__u64	size;
+	__u64	addr_ptr;
 };
 
 struct drm_radeon_gem_set_domain {
-	uint32_t	handle;
-	uint32_t	read_domains;
-	uint32_t	write_domain;
+	__u32	handle;
+	__u32	read_domains;
+	__u32	write_domain;
 };
 
 struct drm_radeon_gem_wait_idle {
-	uint32_t	handle;
-	uint32_t	pad;
+	__u32	handle;
+	__u32	pad;
 };
 
 struct drm_radeon_gem_busy {
-	uint32_t	handle;
-	uint32_t        domain;
+	__u32	handle;
+	__u32        domain;
 };
 
 struct drm_radeon_gem_pread {
 	/** Handle for the object being read. */
-	uint32_t handle;
-	uint32_t pad;
+	__u32 handle;
+	__u32 pad;
 	/** Offset into the object to read from */
-	uint64_t offset;
+	__u64 offset;
 	/** Length of data to read */
-	uint64_t size;
+	__u64 size;
 	/** Pointer to write the data into. */
 	/* void *, but pointers are not 32/64 compatible */
-	uint64_t data_ptr;
+	__u64 data_ptr;
 };
 
 struct drm_radeon_gem_pwrite {
 	/** Handle for the object being written to. */
-	uint32_t handle;
-	uint32_t pad;
+	__u32 handle;
+	__u32 pad;
 	/** Offset into the object to write to */
-	uint64_t offset;
+	__u64 offset;
 	/** Length of data to write */
-	uint64_t size;
+	__u64 size;
 	/** Pointer to read the data from. */
 	/* void *, but pointers are not 32/64 compatible */
-	uint64_t data_ptr;
+	__u64 data_ptr;
 };
 
 /* Sets or returns a value associated with a buffer. */
 struct drm_radeon_gem_op {
-	uint32_t	handle; /* buffer */
-	uint32_t	op;     /* RADEON_GEM_OP_* */
-	uint64_t	value;  /* input or return value */
+	__u32	handle; /* buffer */
+	__u32	op;     /* RADEON_GEM_OP_* */
+	__u64	value;  /* input or return value */
 };
 
 #define RADEON_GEM_OP_GET_INITIAL_DOMAIN	0
@@ -935,11 +936,11 @@ struct drm_radeon_gem_op {
 #define RADEON_VM_PAGE_SNOOPED		(1 << 4)
 
 struct drm_radeon_gem_va {
-	uint32_t		handle;
-	uint32_t		operation;
-	uint32_t		vm_id;
-	uint32_t		flags;
-	uint64_t		offset;
+	__u32		handle;
+	__u32		operation;
+	__u32		vm_id;
+	__u32		flags;
+	__u64		offset;
 };
 
 #define RADEON_CHUNK_ID_RELOCS	0x01
@@ -961,29 +962,29 @@ struct drm_radeon_gem_va {
 /* 0 = normal, + = higher priority, - = lower priority */
 
 struct drm_radeon_cs_chunk {
-	uint32_t		chunk_id;
-	uint32_t		length_dw;
-	uint64_t		chunk_data;
+	__u32		chunk_id;
+	__u32		length_dw;
+	__u64		chunk_data;
 };
 
 /* drm_radeon_cs_reloc.flags */
 #define RADEON_RELOC_PRIO_MASK		(0xf << 0)
 
 struct drm_radeon_cs_reloc {
-	uint32_t		handle;
-	uint32_t		read_domains;
-	uint32_t		write_domain;
-	uint32_t		flags;
+	__u32		handle;
+	__u32		read_domains;
+	__u32		write_domain;
+	__u32		flags;
 };
 
 struct drm_radeon_cs {
-	uint32_t		num_chunks;
-	uint32_t		cs_id;
-	/* this points to uint64_t * which point to cs chunks */
-	uint64_t		chunks;
+	__u32		num_chunks;
+	__u32		cs_id;
+	/* this points to __u64 * which point to cs chunks */
+	__u64		chunks;
 	/* updates to the limits after this CS ioctl */
-	uint64_t		gart_limit;
-	uint64_t		vram_limit;
+	__u64		gart_limit;
+	__u64		vram_limit;
 };
 
 #define RADEON_INFO_DEVICE_ID		0x00
@@ -1040,9 +1041,9 @@ struct drm_radeon_cs {
 #define RADEON_INFO_READ_REG		0x24
 
 struct drm_radeon_info {
-	uint32_t		request;
-	uint32_t		pad;
-	uint64_t		value;
+	__u32		request;
+	__u32		pad;
+	__u64		value;
 };
 
 /* Those correspond to the tile index to use, this is to explicitly state
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 08/98] r128_drm.h: include drm/drm.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (6 preceding siblings ...)
  2015-05-30 15:37 ` [PATCH 07/98] radeon_drm.h: " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 09/98] via_drm.h: include linux/types.h instead of non-existing via_drmclient.h Mikko Rapeli
                   ` (90 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David Airlie, dri-devel, linux-api

Fixes compile error:

drm/r128_drm.h:156:23: error: array type has incomplete element type
  struct drm_clip_rect boxes[R128_NR_SAREA_CLIPRECTS];

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/r128_drm.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/drm/r128_drm.h b/include/uapi/drm/r128_drm.h
index 8d8878b..76b0aa3 100644
--- a/include/uapi/drm/r128_drm.h
+++ b/include/uapi/drm/r128_drm.h
@@ -33,6 +33,8 @@
 #ifndef __R128_DRM_H__
 #define __R128_DRM_H__
 
+#include <drm/drm.h>
+
 /* WARNING: If you change any of these defines, make sure to change the
  * defines in the X server file (r128_sarea.h)
  */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 09/98] via_drm.h: include linux/types.h instead of non-existing via_drmclient.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (7 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 08/98] r128_drm.h: include drm/drm.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-06-03 17:16   ` Emil Velikov
  2015-05-30 15:38 ` [PATCH 10/98] via_drm.h: hide struct via_file_private in userspace Mikko Rapeli
                   ` (89 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David Airlie, dri-devel, linux-api

Fixes compiler error:

drm/via_drm.h:36:27: fatal error: via_drmclient.h: No such file or directory

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/via_drm.h | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h
index 8b0533c..791531e 100644
--- a/include/uapi/drm/via_drm.h
+++ b/include/uapi/drm/via_drm.h
@@ -24,6 +24,7 @@
 #ifndef _VIA_DRM_H_
 #define _VIA_DRM_H_
 
+#include <linux/types.h>
 #include <drm/drm.h>
 
 /* WARNING: These defines must be the same as what the Xserver uses.
@@ -33,9 +34,6 @@
 #ifndef _VIA_DEFINES_
 #define _VIA_DEFINES_
 
-#ifndef __KERNEL__
-#include "via_drmclient.h"
-#endif
 
 #define VIA_NR_SAREA_CLIPRECTS		8
 #define VIA_NR_XVMC_PORTS               10
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 10/98] via_drm.h: hide struct via_file_private in userspace
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (8 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 09/98] via_drm.h: include linux/types.h instead of non-existing via_drmclient.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-06-03 16:50   ` Emil Velikov
  2015-05-30 15:38 ` [PATCH 11/98] savage_drm.h: include <drm/drm.h> Mikko Rapeli
                   ` (88 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David Airlie, dri-devel, linux-api

Fixes compiler error since list_head is not exported to userspace headers.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/via_drm.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h
index 791531e..34ce658 100644
--- a/include/uapi/drm/via_drm.h
+++ b/include/uapi/drm/via_drm.h
@@ -272,8 +272,10 @@ typedef struct drm_via_dmablit {
 	drm_via_blitsync_t sync;
 } drm_via_dmablit_t;
 
+#ifdef __KERNEL__
 struct via_file_private {
 	struct list_head obj_list;
 };
+#endif
 
 #endif				/* _VIA_DRM_H_ */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 11/98] savage_drm.h: include <drm/drm.h>
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (9 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 10/98] via_drm.h: hide struct via_file_private in userspace Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 12/98] sis_drm.h: hide sis_file_private in userspace Mikko Rapeli
                   ` (87 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David Airlie, dri-devel, linux-api

Fixes compiler error:

drm/savage_drm.h:50:24: error: array type has incomplete element type
  struct drm_tex_region texList[SAVAGE_NR_TEX_HEAPS][SAVAGE_NR_TEX_REGIONS +

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/savage_drm.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/drm/savage_drm.h b/include/uapi/drm/savage_drm.h
index 818d49b..9dc9dc1 100644
--- a/include/uapi/drm/savage_drm.h
+++ b/include/uapi/drm/savage_drm.h
@@ -26,6 +26,8 @@
 #ifndef __SAVAGE_DRM_H__
 #define __SAVAGE_DRM_H__
 
+#include <drm/drm.h>
+
 #ifndef __SAVAGE_SAREA_DEFINES__
 #define __SAVAGE_SAREA_DEFINES__
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 12/98] sis_drm.h: hide sis_file_private in userspace
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (10 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 11/98] savage_drm.h: include <drm/drm.h> Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 13/98] drm/i810_drm.h: include drm/drm.h Mikko Rapeli
                   ` (86 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David Airlie, dri-devel, linux-api

Fixes compiler error:

drm/sis_drm.h:68:19: error: field ‘obj_list’ has incomplete type
  struct list_head obj_list;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/sis_drm.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/drm/sis_drm.h b/include/uapi/drm/sis_drm.h
index df37632..3d0903f 100644
--- a/include/uapi/drm/sis_drm.h
+++ b/include/uapi/drm/sis_drm.h
@@ -64,8 +64,10 @@ typedef struct {
 	unsigned long offset, size;
 } drm_sis_fb_t;
 
+#ifdef __KERNEL__
 struct sis_file_private {
 	struct list_head obj_list;
 };
+#endif
 
 #endif				/* __SIS_DRM_H__ */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 13/98] drm/i810_drm.h: include drm/drm.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (11 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 12/98] sis_drm.h: hide sis_file_private in userspace Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 14/98] include/uapi/drm/vmwgfx_drm.h: use __s32, __u32 and __u64 from linux/types.h Mikko Rapeli
                   ` (85 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David Airlie, dri-devel, linux-api

Fixes userspace compilation error:

error: array type has incomplete element type
struct drm_clip_rect boxes[I810_NR_SAREA_CLIPRECTS];

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/i810_drm.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/drm/i810_drm.h b/include/uapi/drm/i810_drm.h
index 7a10bb6..34736ef 100644
--- a/include/uapi/drm/i810_drm.h
+++ b/include/uapi/drm/i810_drm.h
@@ -1,6 +1,8 @@
 #ifndef _I810_DRM_H_
 #define _I810_DRM_H_
 
+#include <drm/drm.h>
+
 /* WARNING: These defines must be the same as what the Xserver uses.
  * if you change them, you must change the defines in the Xserver.
  */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 14/98] include/uapi/drm/vmwgfx_drm.h: use __s32, __u32 and __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (12 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 13/98] drm/i810_drm.h: include drm/drm.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 15/98] include/uapi/drm/qxl_drm.h: " Mikko Rapeli
                   ` (84 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David Airlie, dri-devel, linux-api

Fixes userspace compilation errors like:

error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/vmwgfx_drm.h | 260 +++++++++++++++++++++---------------------
 1 file changed, 130 insertions(+), 130 deletions(-)

diff --git a/include/uapi/drm/vmwgfx_drm.h b/include/uapi/drm/vmwgfx_drm.h
index c472bedb..9190697 100644
--- a/include/uapi/drm/vmwgfx_drm.h
+++ b/include/uapi/drm/vmwgfx_drm.h
@@ -108,9 +108,9 @@ enum drm_vmw_handle_type {
  */
 
 struct drm_vmw_getparam_arg {
-	uint64_t value;
-	uint32_t param;
-	uint32_t pad64;
+	__u64 value;
+	__u32 param;
+	__u32 pad64;
 };
 
 /*************************************************************************/
@@ -131,8 +131,8 @@ struct drm_vmw_getparam_arg {
  */
 
 struct drm_vmw_context_arg {
-	int32_t cid;
-	uint32_t pad64;
+	__s32 cid;
+	__u32 pad64;
 };
 
 /*************************************************************************/
@@ -162,7 +162,7 @@ struct drm_vmw_context_arg {
  * @mip_levels: Number of mip levels for each face.
  * An unused face should have 0 encoded.
  * @size_addr: Address of a user-space array of sruct drm_vmw_size
- * cast to an uint64_t for 32-64 bit compatibility.
+ * cast to an __u64 for 32-64 bit compatibility.
  * The size of the array should equal the total number of mipmap levels.
  * @shareable: Boolean whether other clients (as identified by file descriptors)
  * may reference this surface.
@@ -174,12 +174,12 @@ struct drm_vmw_context_arg {
  */
 
 struct drm_vmw_surface_create_req {
-	uint32_t flags;
-	uint32_t format;
-	uint32_t mip_levels[DRM_VMW_MAX_SURFACE_FACES];
-	uint64_t size_addr;
-	int32_t shareable;
-	int32_t scanout;
+	__u32 flags;
+	__u32 format;
+	__u32 mip_levels[DRM_VMW_MAX_SURFACE_FACES];
+	__u64 size_addr;
+	__s32 shareable;
+	__s32 scanout;
 };
 
 /**
@@ -194,7 +194,7 @@ struct drm_vmw_surface_create_req {
  */
 
 struct drm_vmw_surface_arg {
-	int32_t sid;
+	__s32 sid;
 	enum drm_vmw_handle_type handle_type;
 };
 
@@ -210,10 +210,10 @@ struct drm_vmw_surface_arg {
  */
 
 struct drm_vmw_size {
-	uint32_t width;
-	uint32_t height;
-	uint32_t depth;
-	uint32_t pad64;
+	__u32 width;
+	__u32 height;
+	__u32 depth;
+	__u32 pad64;
 };
 
 /**
@@ -281,13 +281,13 @@ union drm_vmw_surface_reference_arg {
 /**
  * struct drm_vmw_execbuf_arg
  *
- * @commands: User-space address of a command buffer cast to an uint64_t.
+ * @commands: User-space address of a command buffer cast to an __u64.
  * @command-size: Size in bytes of the command buffer.
  * @throttle-us: Sleep until software is less than @throttle_us
  * microseconds ahead of hardware. The driver may round this value
  * to the nearest kernel tick.
  * @fence_rep: User-space address of a struct drm_vmw_fence_rep cast to an
- * uint64_t.
+ * __u64.
  * @version: Allows expanding the execbuf ioctl parameters without breaking
  * backwards compatibility, since user-space will always tell the kernel
  * which version it uses.
@@ -299,12 +299,12 @@ union drm_vmw_surface_reference_arg {
 #define DRM_VMW_EXECBUF_VERSION 1
 
 struct drm_vmw_execbuf_arg {
-	uint64_t commands;
-	uint32_t command_size;
-	uint32_t throttle_us;
-	uint64_t fence_rep;
-	uint32_t version;
-	uint32_t flags;
+	__u64 commands;
+	__u32 command_size;
+	__u32 throttle_us;
+	__u64 fence_rep;
+	__u32 version;
+	__u32 flags;
 };
 
 /**
@@ -333,12 +333,12 @@ struct drm_vmw_execbuf_arg {
  */
 
 struct drm_vmw_fence_rep {
-	uint32_t handle;
-	uint32_t mask;
-	uint32_t seqno;
-	uint32_t passed_seqno;
-	uint32_t pad64;
-	int32_t error;
+	__u32 handle;
+	__u32 mask;
+	__u32 seqno;
+	__u32 passed_seqno;
+	__u32 pad64;
+	__s32 error;
 };
 
 /*************************************************************************/
@@ -368,8 +368,8 @@ struct drm_vmw_fence_rep {
  */
 
 struct drm_vmw_alloc_dmabuf_req {
-	uint32_t size;
-	uint32_t pad64;
+	__u32 size;
+	__u32 pad64;
 };
 
 /**
@@ -386,11 +386,11 @@ struct drm_vmw_alloc_dmabuf_req {
  */
 
 struct drm_vmw_dmabuf_rep {
-	uint64_t map_handle;
-	uint32_t handle;
-	uint32_t cur_gmr_id;
-	uint32_t cur_gmr_offset;
-	uint32_t pad64;
+	__u64 map_handle;
+	__u32 handle;
+	__u32 cur_gmr_id;
+	__u32 cur_gmr_offset;
+	__u32 pad64;
 };
 
 /**
@@ -423,8 +423,8 @@ union drm_vmw_alloc_dmabuf_arg {
  */
 
 struct drm_vmw_unref_dmabuf_arg {
-	uint32_t handle;
-	uint32_t pad64;
+	__u32 handle;
+	__u32 pad64;
 };
 
 /*************************************************************************/
@@ -447,10 +447,10 @@ struct drm_vmw_unref_dmabuf_arg {
  */
 
 struct drm_vmw_rect {
-	int32_t x;
-	int32_t y;
-	uint32_t w;
-	uint32_t h;
+	__s32 x;
+	__s32 y;
+	__u32 w;
+	__u32 h;
 };
 
 /**
@@ -472,21 +472,21 @@ struct drm_vmw_rect {
  */
 
 struct drm_vmw_control_stream_arg {
-	uint32_t stream_id;
-	uint32_t enabled;
+	__u32 stream_id;
+	__u32 enabled;
 
-	uint32_t flags;
-	uint32_t color_key;
+	__u32 flags;
+	__u32 color_key;
 
-	uint32_t handle;
-	uint32_t offset;
-	int32_t format;
-	uint32_t size;
-	uint32_t width;
-	uint32_t height;
-	uint32_t pitch[3];
+	__u32 handle;
+	__u32 offset;
+	__s32 format;
+	__u32 size;
+	__u32 width;
+	__u32 height;
+	__u32 pitch[3];
 
-	uint32_t pad64;
+	__u32 pad64;
 	struct drm_vmw_rect src;
 	struct drm_vmw_rect dst;
 };
@@ -514,12 +514,12 @@ struct drm_vmw_control_stream_arg {
  */
 
 struct drm_vmw_cursor_bypass_arg {
-	uint32_t flags;
-	uint32_t crtc_id;
-	int32_t xpos;
-	int32_t ypos;
-	int32_t xhot;
-	int32_t yhot;
+	__u32 flags;
+	__u32 crtc_id;
+	__s32 xpos;
+	__s32 ypos;
+	__s32 xhot;
+	__s32 yhot;
 };
 
 /*************************************************************************/
@@ -537,8 +537,8 @@ struct drm_vmw_cursor_bypass_arg {
  */
 
 struct drm_vmw_stream_arg {
-	uint32_t stream_id;
-	uint32_t pad64;
+	__u32 stream_id;
+	__u32 pad64;
 };
 
 /*************************************************************************/
@@ -560,7 +560,7 @@ struct drm_vmw_stream_arg {
 /**
  * struct drm_vmw_get_3d_cap_arg
  *
- * @buffer: Pointer to a buffer for capability data, cast to an uint64_t
+ * @buffer: Pointer to a buffer for capability data, cast to an __u64
  * @size: Max size to copy
  *
  * Input argument to the DRM_VMW_GET_3D_CAP_IOCTL
@@ -568,9 +568,9 @@ struct drm_vmw_stream_arg {
  */
 
 struct drm_vmw_get_3d_cap_arg {
-	uint64_t buffer;
-	uint32_t max_size;
-	uint32_t pad64;
+	__u64 buffer;
+	__u32 max_size;
+	__u32 pad64;
 };
 
 /*************************************************************************/
@@ -619,14 +619,14 @@ struct drm_vmw_get_3d_cap_arg {
  */
 
 struct drm_vmw_fence_wait_arg {
-	uint32_t handle;
-	int32_t  cookie_valid;
-	uint64_t kernel_cookie;
-	uint64_t timeout_us;
-	int32_t lazy;
-	int32_t flags;
-	int32_t wait_options;
-	int32_t pad64;
+	__u32 handle;
+	__s32  cookie_valid;
+	__u64 kernel_cookie;
+	__u64 timeout_us;
+	__s32 lazy;
+	__s32 flags;
+	__s32 wait_options;
+	__s32 pad64;
 };
 
 /*************************************************************************/
@@ -650,12 +650,12 @@ struct drm_vmw_fence_wait_arg {
  */
 
 struct drm_vmw_fence_signaled_arg {
-	 uint32_t handle;
-	 uint32_t flags;
-	 int32_t signaled;
-	 uint32_t passed_seqno;
-	 uint32_t signaled_flags;
-	 uint32_t pad64;
+	 __u32 handle;
+	 __u32 flags;
+	 __s32 signaled;
+	 __u32 passed_seqno;
+	 __u32 signaled_flags;
+	 __u32 pad64;
 };
 
 /*************************************************************************/
@@ -676,8 +676,8 @@ struct drm_vmw_fence_signaled_arg {
  */
 
 struct drm_vmw_fence_arg {
-	 uint32_t handle;
-	 uint32_t pad64;
+	 __u32 handle;
+	 __u32 pad64;
 };
 
 
@@ -698,9 +698,9 @@ struct drm_vmw_fence_arg {
 
 struct drm_vmw_event_fence {
 	struct drm_event base;
-	uint64_t user_data;
-	uint32_t tv_sec;
-	uint32_t tv_usec;
+	__u64 user_data;
+	__u32 tv_sec;
+	__u32 tv_usec;
 };
 
 /*
@@ -712,17 +712,17 @@ struct drm_vmw_event_fence {
 /**
  * struct drm_vmw_fence_event_arg
  *
- * @fence_rep: Pointer to fence_rep structure cast to uint64_t or 0 if
+ * @fence_rep: Pointer to fence_rep structure cast to __u64 or 0 if
  * the fence is not supposed to be referenced by user-space.
  * @user_info: Info to be delivered with the event.
  * @handle: Attach the event to this fence only.
  * @flags: A set of flags as defined above.
  */
 struct drm_vmw_fence_event_arg {
-	uint64_t fence_rep;
-	uint64_t user_data;
-	uint32_t handle;
-	uint32_t flags;
+	__u64 fence_rep;
+	__u64 user_data;
+	__u32 handle;
+	__u32 flags;
 };
 
 
@@ -742,7 +742,7 @@ struct drm_vmw_fence_event_arg {
  * @sid: Surface id to present from.
  * @dest_x: X placement coordinate for surface.
  * @dest_y: Y placement coordinate for surface.
- * @clips_ptr: Pointer to an array of clip rects cast to an uint64_t.
+ * @clips_ptr: Pointer to an array of clip rects cast to an __u64.
  * @num_clips: Number of cliprects given relative to the framebuffer origin,
  * in the same coordinate space as the frame buffer.
  * @pad64: Unused 64-bit padding.
@@ -751,13 +751,13 @@ struct drm_vmw_fence_event_arg {
  */
 
 struct drm_vmw_present_arg {
-	uint32_t fb_id;
-	uint32_t sid;
-	int32_t dest_x;
-	int32_t dest_y;
-	uint64_t clips_ptr;
-	uint32_t num_clips;
-	uint32_t pad64;
+	__u32 fb_id;
+	__u32 sid;
+	__s32 dest_x;
+	__s32 dest_y;
+	__u64 clips_ptr;
+	__u32 num_clips;
+	__u32 pad64;
 };
 
 
@@ -775,16 +775,16 @@ struct drm_vmw_present_arg {
  * struct drm_vmw_present_arg
  * @fb_id: fb_id to present / read back from.
  * @num_clips: Number of cliprects.
- * @clips_ptr: Pointer to an array of clip rects cast to an uint64_t.
- * @fence_rep: Pointer to a struct drm_vmw_fence_rep, cast to an uint64_t.
+ * @clips_ptr: Pointer to an array of clip rects cast to an __u64.
+ * @fence_rep: Pointer to a struct drm_vmw_fence_rep, cast to an __u64.
  * If this member is NULL, then the ioctl should not return a fence.
  */
 
 struct drm_vmw_present_readback_arg {
-	 uint32_t fb_id;
-	 uint32_t num_clips;
-	 uint64_t clips_ptr;
-	 uint64_t fence_rep;
+	 __u32 fb_id;
+	 __u32 num_clips;
+	 __u64 clips_ptr;
+	 __u64 fence_rep;
 };
 
 /*************************************************************************/
@@ -800,14 +800,14 @@ struct drm_vmw_present_readback_arg {
  * struct drm_vmw_update_layout_arg
  *
  * @num_outputs: number of active connectors
- * @rects: pointer to array of drm_vmw_rect cast to an uint64_t
+ * @rects: pointer to array of drm_vmw_rect cast to an __u64
  *
  * Input argument to the DRM_VMW_UPDATE_LAYOUT Ioctl.
  */
 struct drm_vmw_update_layout_arg {
-	uint32_t num_outputs;
-	uint32_t pad64;
-	uint64_t rects;
+	__u32 num_outputs;
+	__u32 pad64;
+	__u64 rects;
 };
 
 
@@ -845,10 +845,10 @@ enum drm_vmw_shader_type {
  */
 struct drm_vmw_shader_create_arg {
 	enum drm_vmw_shader_type shader_type;
-	uint32_t size;
-	uint32_t buffer_handle;
-	uint32_t shader_handle;
-	uint64_t offset;
+	__u32 size;
+	__u32 buffer_handle;
+	__u32 shader_handle;
+	__u64 offset;
 };
 
 /*************************************************************************/
@@ -867,8 +867,8 @@ struct drm_vmw_shader_create_arg {
  * Input argument to the DRM_VMW_UNREF_SHADER ioctl.
  */
 struct drm_vmw_shader_arg {
-	uint32_t handle;
-	uint32_t pad64;
+	__u32 handle;
+	__u32 pad64;
 };
 
 /*************************************************************************/
@@ -912,14 +912,14 @@ enum drm_vmw_surface_flags {
  * Part of output argument for the DRM_VMW_GB_SURFACE_REF Ioctl.
  */
 struct drm_vmw_gb_surface_create_req {
-	uint32_t svga3d_flags;
-	uint32_t format;
-	uint32_t mip_levels;
+	__u32 svga3d_flags;
+	__u32 format;
+	__u32 mip_levels;
 	enum drm_vmw_surface_flags drm_surface_flags;
-	uint32_t multisample_count;
-	uint32_t autogen_filter;
-	uint32_t buffer_handle;
-	uint32_t pad64;
+	__u32 multisample_count;
+	__u32 autogen_filter;
+	__u32 buffer_handle;
+	__u32 pad64;
 	struct drm_vmw_size base_size;
 };
 
@@ -938,11 +938,11 @@ struct drm_vmw_gb_surface_create_req {
  * Output argument for the DRM_VMW_GB_SURFACE_CREATE ioctl.
  */
 struct drm_vmw_gb_surface_create_rep {
-	uint32_t handle;
-	uint32_t backup_size;
-	uint32_t buffer_handle;
-	uint32_t buffer_size;
-	uint64_t buffer_map_handle;
+	__u32 handle;
+	__u32 backup_size;
+	__u32 buffer_handle;
+	__u32 buffer_size;
+	__u64 buffer_map_handle;
 };
 
 /**
@@ -1055,8 +1055,8 @@ enum drm_vmw_synccpu_op {
 struct drm_vmw_synccpu_arg {
 	enum drm_vmw_synccpu_op op;
 	enum drm_vmw_synccpu_flags flags;
-	uint32_t handle;
-	uint32_t pad64;
+	__u32 handle;
+	__u32 pad64;
 };
 
 #endif
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 15/98] include/uapi/drm/qxl_drm.h: use __s32, __u32 and __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (13 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 14/98] include/uapi/drm/vmwgfx_drm.h: use __s32, __u32 and __u64 from linux/types.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 16/98] include/uapi/drm/msm_drm.h: use __s32, __s64, " Mikko Rapeli
                   ` (83 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David Airlie, dri-devel, linux-api

Fixes userspace compilation errors like:

error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/qxl_drm.h | 74 +++++++++++++++++++++++-----------------------
 1 file changed, 37 insertions(+), 37 deletions(-)

diff --git a/include/uapi/drm/qxl_drm.h b/include/uapi/drm/qxl_drm.h
index ebebd36..dface36 100644
--- a/include/uapi/drm/qxl_drm.h
+++ b/include/uapi/drm/qxl_drm.h
@@ -30,7 +30,7 @@
 /* Please note that modifications to all structs defined here are
  * subject to backwards-compatibility constraints.
  *
- * Do not use pointers, use uint64_t instead for 32 bit / 64 bit user/kernel
+ * Do not use pointers, use __u64 instead for 32 bit / 64 bit user/kernel
  * compatibility Keep fields aligned to their size
  */
 
@@ -48,14 +48,14 @@
 #define DRM_QXL_ALLOC_SURF  0x06
 
 struct drm_qxl_alloc {
-	uint32_t size;
-	uint32_t handle; /* 0 is an invalid handle */
+	__u32 size;
+	__u32 handle; /* 0 is an invalid handle */
 };
 
 struct drm_qxl_map {
-	uint64_t offset; /* use for mmap system call */
-	uint32_t handle;
-	uint32_t pad;
+	__u64 offset; /* use for mmap system call */
+	__u32 handle;
+	__u32 pad;
 };
 
 /*
@@ -68,59 +68,59 @@ struct drm_qxl_map {
 #define QXL_RELOC_TYPE_SURF 2
 
 struct drm_qxl_reloc {
-	uint64_t src_offset; /* offset into src_handle or src buffer */
-	uint64_t dst_offset; /* offset in dest handle */
-	uint32_t src_handle; /* dest handle to compute address from */
-	uint32_t dst_handle; /* 0 if to command buffer */
-	uint32_t reloc_type;
-	uint32_t pad;
+	__u64 src_offset; /* offset into src_handle or src buffer */
+	__u64 dst_offset; /* offset in dest handle */
+	__u32 src_handle; /* dest handle to compute address from */
+	__u32 dst_handle; /* 0 if to command buffer */
+	__u32 reloc_type;
+	__u32 pad;
 };
 
 struct drm_qxl_command {
-	uint64_t	 __user command; /* void* */
-	uint64_t	 __user relocs; /* struct drm_qxl_reloc* */
-	uint32_t		type;
-	uint32_t		command_size;
-	uint32_t		relocs_num;
-	uint32_t                pad;
+	__u64	 __user command; /* void* */
+	__u64	 __user relocs; /* struct drm_qxl_reloc* */
+	__u32		type;
+	__u32		command_size;
+	__u32		relocs_num;
+	__u32                pad;
 };
 
 /* XXX: call it drm_qxl_commands? */
 struct drm_qxl_execbuffer {
-	uint32_t		flags;		/* for future use */
-	uint32_t		commands_num;
-	uint64_t	 __user commands;	/* struct drm_qxl_command* */
+	__u32		flags;		/* for future use */
+	__u32		commands_num;
+	__u64	 __user commands;	/* struct drm_qxl_command* */
 };
 
 struct drm_qxl_update_area {
-	uint32_t handle;
-	uint32_t top;
-	uint32_t left;
-	uint32_t bottom;
-	uint32_t right;
-	uint32_t pad;
+	__u32 handle;
+	__u32 top;
+	__u32 left;
+	__u32 bottom;
+	__u32 right;
+	__u32 pad;
 };
 
 #define QXL_PARAM_NUM_SURFACES 1 /* rom->n_surfaces */
 #define QXL_PARAM_MAX_RELOCS 2
 struct drm_qxl_getparam {
-	uint64_t param;
-	uint64_t value;
+	__u64 param;
+	__u64 value;
 };
 
 /* these are one bit values */
 struct drm_qxl_clientcap {
-	uint32_t index;
-	uint32_t pad;
+	__u32 index;
+	__u32 pad;
 };
 
 struct drm_qxl_alloc_surf {
-	uint32_t format;
-	uint32_t width;
-	uint32_t height;
-	int32_t stride;
-	uint32_t handle;
-	uint32_t pad;
+	__u32 format;
+	__u32 width;
+	__u32 height;
+	__s32 stride;
+	__u32 handle;
+	__u32 pad;
 };
 
 #define DRM_IOCTL_QXL_ALLOC \
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 16/98] include/uapi/drm/msm_drm.h: use __s32, __s64, __u32 and __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (14 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 15/98] include/uapi/drm/qxl_drm.h: " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 17/98] include/uapi/linux/agpgart.h: include stdlib.h in userspace Mikko Rapeli
                   ` (82 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David Airlie, dri-devel, linux-api

Fixes userspace compilation errors like:

error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/msm_drm.h | 76 +++++++++++++++++++++++-----------------------
 1 file changed, 38 insertions(+), 38 deletions(-)

diff --git a/include/uapi/drm/msm_drm.h b/include/uapi/drm/msm_drm.h
index 0664c31..75a232b 100644
--- a/include/uapi/drm/msm_drm.h
+++ b/include/uapi/drm/msm_drm.h
@@ -23,7 +23,7 @@
 
 /* Please note that modifications to all structs defined here are
  * subject to backwards-compatibility constraints:
- *  1) Do not use pointers, use uint64_t instead for 32 bit / 64 bit
+ *  1) Do not use pointers, use __u64 instead for 32 bit / 64 bit
  *     user/kernel compatibility
  *  2) Keep fields aligned to their size
  *  3) Because of how drm_ioctl() works, we can add new fields at
@@ -44,8 +44,8 @@
  * same as 'struct timespec' but 32/64b ABI safe.
  */
 struct drm_msm_timespec {
-	int64_t tv_sec;          /* seconds */
-	int64_t tv_nsec;         /* nanoseconds */
+	__s64 tv_sec;          /* seconds */
+	__s64 tv_nsec;         /* nanoseconds */
 };
 
 #define MSM_PARAM_GPU_ID     0x01
@@ -53,9 +53,9 @@ struct drm_msm_timespec {
 #define MSM_PARAM_CHIP_ID    0x03
 
 struct drm_msm_param {
-	uint32_t pipe;           /* in, MSM_PIPE_x */
-	uint32_t param;          /* in, MSM_PARAM_x */
-	uint64_t value;          /* out (get_param) or in (set_param) */
+	__u32 pipe;           /* in, MSM_PIPE_x */
+	__u32 param;          /* in, MSM_PARAM_x */
+	__u64 value;          /* out (get_param) or in (set_param) */
 };
 
 /*
@@ -77,15 +77,15 @@ struct drm_msm_param {
                               MSM_BO_UNCACHED)
 
 struct drm_msm_gem_new {
-	uint64_t size;           /* in */
-	uint32_t flags;          /* in, mask of MSM_BO_x */
-	uint32_t handle;         /* out */
+	__u64 size;           /* in */
+	__u32 flags;          /* in, mask of MSM_BO_x */
+	__u32 handle;         /* out */
 };
 
 struct drm_msm_gem_info {
-	uint32_t handle;         /* in */
-	uint32_t pad;
-	uint64_t offset;         /* out, offset to pass to mmap() */
+	__u32 handle;         /* in */
+	__u32 pad;
+	__u64 offset;         /* out, offset to pass to mmap() */
 };
 
 #define MSM_PREP_READ        0x01
@@ -95,13 +95,13 @@ struct drm_msm_gem_info {
 #define MSM_PREP_FLAGS       (MSM_PREP_READ | MSM_PREP_WRITE | MSM_PREP_NOSYNC)
 
 struct drm_msm_gem_cpu_prep {
-	uint32_t handle;         /* in */
-	uint32_t op;             /* in, mask of MSM_PREP_x */
+	__u32 handle;         /* in */
+	__u32 op;             /* in, mask of MSM_PREP_x */
 	struct drm_msm_timespec timeout;   /* in */
 };
 
 struct drm_msm_gem_cpu_fini {
-	uint32_t handle;         /* in */
+	__u32 handle;         /* in */
 };
 
 /*
@@ -120,11 +120,11 @@ struct drm_msm_gem_cpu_fini {
  * otherwise EINVAL.
  */
 struct drm_msm_gem_submit_reloc {
-	uint32_t submit_offset;  /* in, offset from submit_bo */
-	uint32_t or;             /* in, value OR'd with result */
-	int32_t  shift;          /* in, amount of left shift (can be negative) */
-	uint32_t reloc_idx;      /* in, index of reloc_bo buffer */
-	uint64_t reloc_offset;   /* in, offset from start of reloc_bo */
+	__u32 submit_offset;  /* in, offset from submit_bo */
+	__u32 or;             /* in, value OR'd with result */
+	__s32  shift;          /* in, amount of left shift (can be negative) */
+	__u32 reloc_idx;      /* in, index of reloc_bo buffer */
+	__u64 reloc_offset;   /* in, offset from start of reloc_bo */
 };
 
 /* submit-types:
@@ -139,13 +139,13 @@ struct drm_msm_gem_submit_reloc {
 #define MSM_SUBMIT_CMD_IB_TARGET_BUF   0x0002
 #define MSM_SUBMIT_CMD_CTX_RESTORE_BUF 0x0003
 struct drm_msm_gem_submit_cmd {
-	uint32_t type;           /* in, one of MSM_SUBMIT_CMD_x */
-	uint32_t submit_idx;     /* in, index of submit_bo cmdstream buffer */
-	uint32_t submit_offset;  /* in, offset into submit_bo */
-	uint32_t size;           /* in, cmdstream size */
-	uint32_t pad;
-	uint32_t nr_relocs;      /* in, number of submit_reloc's */
-	uint64_t __user relocs;  /* in, ptr to array of submit_reloc's */
+	__u32 type;           /* in, one of MSM_SUBMIT_CMD_x */
+	__u32 submit_idx;     /* in, index of submit_bo cmdstream buffer */
+	__u32 submit_offset;  /* in, offset into submit_bo */
+	__u32 size;           /* in, cmdstream size */
+	__u32 pad;
+	__u32 nr_relocs;      /* in, number of submit_reloc's */
+	__u64 __user relocs;  /* in, ptr to array of submit_reloc's */
 };
 
 /* Each buffer referenced elsewhere in the cmdstream submit (ie. the
@@ -165,9 +165,9 @@ struct drm_msm_gem_submit_cmd {
 #define MSM_SUBMIT_BO_FLAGS            (MSM_SUBMIT_BO_READ | MSM_SUBMIT_BO_WRITE)
 
 struct drm_msm_gem_submit_bo {
-	uint32_t flags;          /* in, mask of MSM_SUBMIT_BO_x */
-	uint32_t handle;         /* in, GEM handle */
-	uint64_t presumed;       /* in/out, presumed buffer address */
+	__u32 flags;          /* in, mask of MSM_SUBMIT_BO_x */
+	__u32 handle;         /* in, GEM handle */
+	__u64 presumed;       /* in/out, presumed buffer address */
 };
 
 /* Each cmdstream submit consists of a table of buffers involved, and
@@ -175,12 +175,12 @@ struct drm_msm_gem_submit_bo {
  * (context-restore), and IB buffers needed for per tile/bin draw cmds.
  */
 struct drm_msm_gem_submit {
-	uint32_t pipe;           /* in, MSM_PIPE_x */
-	uint32_t fence;          /* out */
-	uint32_t nr_bos;         /* in, number of submit_bo's */
-	uint32_t nr_cmds;        /* in, number of submit_cmd's */
-	uint64_t __user bos;     /* in, ptr to array of submit_bo's */
-	uint64_t __user cmds;    /* in, ptr to array of submit_cmd's */
+	__u32 pipe;           /* in, MSM_PIPE_x */
+	__u32 fence;          /* out */
+	__u32 nr_bos;         /* in, number of submit_bo's */
+	__u32 nr_cmds;        /* in, number of submit_cmd's */
+	__u64 __user bos;     /* in, ptr to array of submit_bo's */
+	__u64 __user cmds;    /* in, ptr to array of submit_cmd's */
 };
 
 /* The normal way to synchronize with the GPU is just to CPU_PREP on
@@ -191,8 +191,8 @@ struct drm_msm_gem_submit {
  * APIs without requiring a dummy bo to synchronize on.
  */
 struct drm_msm_wait_fence {
-	uint32_t fence;          /* in */
-	uint32_t pad;
+	__u32 fence;          /* in */
+	__u32 pad;
 	struct drm_msm_timespec timeout;   /* in */
 };
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 17/98] include/uapi/linux/agpgart.h: include stdlib.h in userspace
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (15 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 16/98] include/uapi/drm/msm_drm.h: use __s32, __s64, " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 18/98] include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP etc macros Mikko Rapeli
                   ` (81 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David Airlie, linux-api

Fixes userspace compiler error:
error: unknown type name ‘size_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/agpgart.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/agpgart.h b/include/uapi/linux/agpgart.h
index 4e828cf..f525104 100644
--- a/include/uapi/linux/agpgart.h
+++ b/include/uapi/linux/agpgart.h
@@ -52,6 +52,7 @@
 
 #ifndef __KERNEL__
 #include <linux/types.h>
+#include <stdlib.h>
 
 struct agp_version {
 	__u16 major;
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 18/98] include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP etc macros
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (16 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 17/98] include/uapi/linux/agpgart.h: include stdlib.h in userspace Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-31  7:18   ` Takashi Iwai
  2015-05-30 15:38 ` [PATCH 19/98] dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h Mikko Rapeli
                   ` (80 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Jaroslav Kysela, Takashi Iwai, alsa-devel, linux-api

Fixes userspace compilation error:

error: expected specifier-qualifier-list before ‘DECLARE_BITMAP’
  DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */

DECLARE_BITMAP etc macros are not meant for userspace headers and thus
added here as private copies for emu10k.h.

Fix was suggested by Arnd Bergmann <arnd@arndb.de> in message
<2168807.4Yxh5gl11Q@wuerfel> on lkml.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/sound/emu10k1.h | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/include/uapi/sound/emu10k1.h b/include/uapi/sound/emu10k1.h
index ec1535b..7575f0f 100644
--- a/include/uapi/sound/emu10k1.h
+++ b/include/uapi/sound/emu10k1.h
@@ -34,6 +34,23 @@
 
 #define EMU10K1_FX8010_PCM_COUNT		8
 
+/*
+ * Following definitions are copies from kernel headers to support compiling
+ * this header file in userspace. The definitions are not generally available
+ * in uapi headers so the needed things are copied here wtih __EMU10k1 prefix.
+ */
+
+/* From include/linux/bitops.h */
+#define __EMU10K1_BITS_PER_BYTE           8
+/* From include/linux/kernel.h */
+#define __EMU10K1_DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
+/* From include/linux/bitops.h */
+#define __EMU10K1_BITS_TO_LONGS(nr) \
+        __EMU10K1_DIV_ROUND_UP(nr, __EMU10K1_BITS_PER_BYTE * sizeof(long))
+/* From include/linux/types.h */
+#define __EMU10K1_DECLARE_BITMAP(name,bits) \
+        unsigned long name[__EMU10K1_BITS_TO_LONGS(bits)]
+
 /* instruction set */
 #define iMAC0	 0x00	/* R = A + (X * Y >> 31)   ; saturation */
 #define iMAC1	 0x01	/* R = A + (-X * Y >> 31)  ; saturation */
@@ -300,7 +317,7 @@ struct snd_emu10k1_fx8010_control_old_gpr {
 struct snd_emu10k1_fx8010_code {
 	char name[128];
 
-	DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
+	__EMU10K1_DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
 	__u32 __user *gpr_map;		/* initializers */
 
 	unsigned int gpr_add_control_count; /* count of GPR controls to add/replace */
@@ -313,11 +330,11 @@ struct snd_emu10k1_fx8010_code {
 	unsigned int gpr_list_control_total; /* total count of GPR controls */
 	struct snd_emu10k1_fx8010_control_gpr __user *gpr_list_controls; /* listed GPR controls */
 
-	DECLARE_BITMAP(tram_valid, 0x100); /* bitmask of valid initializers */
+	__EMU10K1_DECLARE_BITMAP(tram_valid, 0x100); /* bitmask of valid initializers */
 	__u32 __user *tram_data_map;	  /* data initializers */
 	__u32 __user *tram_addr_map;	  /* map initializers */
 
-	DECLARE_BITMAP(code_valid, 1024); /* bitmask of valid instructions */
+	__EMU10K1_DECLARE_BITMAP(code_valid, 1024); /* bitmask of valid instructions */
 	__u32 __user *code;		  /* one instruction - 64 bits */
 };
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 19/98] dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (17 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 18/98] include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP etc macros Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 20/98] hsi_char.h: use __u32 " Mikko Rapeli
                   ` (79 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Alasdair Kergon, Mike Snitzer, dm-devel, linux-api

Fixes userspace compilation errors like:

linux/dm-log-userspace.h:416:2: error: unknown type name ‘uint64_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/dm-log-userspace.h | 43 ++++++++++++++++++-----------------
 1 file changed, 22 insertions(+), 21 deletions(-)

diff --git a/include/uapi/linux/dm-log-userspace.h b/include/uapi/linux/dm-log-userspace.h
index 0fa0d9e..c5ff216 100644
--- a/include/uapi/linux/dm-log-userspace.h
+++ b/include/uapi/linux/dm-log-userspace.h
@@ -7,6 +7,7 @@
 #ifndef __DM_LOG_USERSPACE_H__
 #define __DM_LOG_USERSPACE_H__
 
+#include <linux/types.h>
 #include <linux/dm-ioctl.h> /* For DM_UUID_LEN */
 
 /*
@@ -147,12 +148,12 @@
 
 /*
  * DM_ULOG_GET_REGION_SIZE corresponds to (found in dm-dirty-log.h):
- * uint32_t (*get_region_size)(struct dm_dirty_log *log);
+ * __u32 (*get_region_size)(struct dm_dirty_log *log);
  *
  * Payload-to-userspace:
  *	None.
  * Payload-to-kernel:
- *	uint64_t - contains the region size
+ *	__u64 - contains the region size
  *
  * The region size is something that was determined at constructor time.
  * It is returned in the payload area and 'data_size' is set to
@@ -168,11 +169,11 @@
  * int (*is_clean)(struct dm_dirty_log *log, region_t region);
  *
  * Payload-to-userspace:
- *	uint64_t - the region to get clean status on
+ *	__u64 - the region to get clean status on
  * Payload-to-kernel:
  *	int64_t  - 1 if clean, 0 otherwise
  *
- * Payload is sizeof(uint64_t) and contains the region for which the clean
+ * Payload is sizeof(__u64) and contains the region for which the clean
  * status is being made.
  *
  * When the request has been processed, user-space must return the
@@ -187,7 +188,7 @@
  *		  int can_block);
  *
  * Payload-to-userspace:
- *	uint64_t - the region to get sync status on
+ *	__u64 - the region to get sync status on
  * Payload-to-kernel:
  *	int64_t - 1 if in-sync, 0 otherwise
  *
@@ -203,7 +204,7 @@
  * Payload-to-userspace:
  *	If the 'integrated_flush' directive is present in the constructor
  *	table, the payload is as same as DM_ULOG_MARK_REGION:
- *		uint64_t [] - region(s) to mark
+ *		__u64 [] - region(s) to mark
  *	else
  *		None
  * Payload-to-kernel:
@@ -225,13 +226,13 @@
  * void (*mark_region)(struct dm_dirty_log *log, region_t region);
  *
  * Payload-to-userspace:
- *	uint64_t [] - region(s) to mark
+ *	__u64 [] - region(s) to mark
  * Payload-to-kernel:
  *	None.
  *
  * Incoming payload contains the one or more regions to mark dirty.
  * The number of regions contained in the payload can be determined from
- * 'data_size/sizeof(uint64_t)'.
+ * 'data_size/sizeof(__u64)'.
  *
  * When the request has been processed, user-space must return the
  * dm_ulog_request to the kernel - setting the 'error' field and clearing
@@ -244,13 +245,13 @@
  * void (*clear_region)(struct dm_dirty_log *log, region_t region);
  *
  * Payload-to-userspace:
- *	uint64_t [] - region(s) to clear
+ *	__u64 [] - region(s) to clear
  * Payload-to-kernel:
  *	None.
  *
  * Incoming payload contains the one or more regions to mark clean.
  * The number of regions contained in the payload can be determined from
- * 'data_size/sizeof(uint64_t)'.
+ * 'data_size/sizeof(__u64)'.
  *
  * When the request has been processed, user-space must return the
  * dm_ulog_request to the kernel - setting the 'error' field and clearing
@@ -267,7 +268,7 @@
  * Payload-to-kernel:
  *	{
  *		int64_t i; -- 1 if recovery necessary, 0 otherwise
- *		uint64_t r; -- The region to recover if i=1
+ *		__u64 r; -- The region to recover if i=1
  *	}
  * 'data_size' should be set appropriately.
  *
@@ -283,7 +284,7 @@
  *
  * Payload-to-userspace:
  *	{
- *		uint64_t - region to set sync state on
+ *		__u64 - region to set sync state on
  *		int64_t  - 0 if not-in-sync, 1 if in-sync
  *	}
  * Payload-to-kernel:
@@ -302,7 +303,7 @@
  * Payload-to-userspace:
  *	None.
  * Payload-to-kernel:
- *	uint64_t - the number of in-sync regions
+ *	__u64 - the number of in-sync regions
  *
  * No incoming payload.  Kernel-bound payload contains the number of
  * regions that are in-sync (in a size_t).
@@ -350,11 +351,11 @@
  * int (*is_remote_recovering)(struct dm_dirty_log *log, region_t region);
  *
  * Payload-to-userspace:
- *	uint64_t - region to determine recovery status on
+ *	__u64 - region to determine recovery status on
  * Payload-to-kernel:
  *	{
  *		int64_t is_recovering;  -- 0 if no, 1 if yes
- *		uint64_t in_sync_hint;  -- lowest region still needing resync
+ *		__u64 in_sync_hint;  -- lowest region still needing resync
  *	}
  *
  * When the request has been processed, user-space must return the
@@ -413,16 +414,16 @@ struct dm_ulog_request {
 	 * differentiate between logs that are being swapped and have the
 	 * same 'uuid'.  (Think "live" and "inactive" device-mapper tables.)
 	 */
-	uint64_t luid;
+	__u64 luid;
 	char uuid[DM_UUID_LEN];
 	char padding[3];        /* Padding because DM_UUID_LEN = 129 */
 
-	uint32_t version;       /* See DM_ULOG_REQUEST_VERSION */
-	int32_t error;          /* Used to report back processing errors */
+	__u32 version;       /* See DM_ULOG_REQUEST_VERSION */
+	__s32 error;          /* Used to report back processing errors */
 
-	uint32_t seq;           /* Sequence number for request */
-	uint32_t request_type;  /* DM_ULOG_* defined above */
-	uint32_t data_size;     /* How much data (not including this struct) */
+	__u32 seq;           /* Sequence number for request */
+	__u32 request_type;  /* DM_ULOG_* defined above */
+	__u32 data_size;     /* How much data (not including this struct) */
 
 	char data[0];
 };
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 20/98] hsi_char.h: use __u32 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (18 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 19/98] dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 21/98] include/uapi/linux/hsi/cs-protocol.h: include linux/time.h Mikko Rapeli
                   ` (78 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Sebastian Reichel, linux-api

Fixes userspace compiler errors like:

linux/hsi/hsi_char.h:51:2: error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/hsi/hsi_char.h | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/include/uapi/linux/hsi/hsi_char.h b/include/uapi/linux/hsi/hsi_char.h
index 76160b4..c00a463 100644
--- a/include/uapi/linux/hsi/hsi_char.h
+++ b/include/uapi/linux/hsi/hsi_char.h
@@ -20,10 +20,11 @@
  * 02110-1301 USA
  */
 
-
 #ifndef __HSI_CHAR_H
 #define __HSI_CHAR_H
 
+#include <linux/types.h>
+
 #define HSI_CHAR_MAGIC		'k'
 #define HSC_IOW(num, dtype)	_IOW(HSI_CHAR_MAGIC, num, dtype)
 #define HSC_IOR(num, dtype)	_IOR(HSI_CHAR_MAGIC, num, dtype)
@@ -48,16 +49,16 @@
 #define HSC_ARB_PRIO		1
 
 struct hsc_rx_config {
-	uint32_t mode;
-	uint32_t flow;
-	uint32_t channels;
+	__u32 mode;
+	__u32 flow;
+	__u32 channels;
 };
 
 struct hsc_tx_config {
-	uint32_t mode;
-	uint32_t channels;
-	uint32_t speed;
-	uint32_t arb_mode;
+	__u32 mode;
+	__u32 channels;
+	__u32 speed;
+	__u32 arb_mode;
 };
 
 #endif /* __HSI_CHAR_H */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 21/98] include/uapi/linux/hsi/cs-protocol.h: include linux/time.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (19 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 20/98] hsi_char.h: use __u32 " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 22/98] ebtables.h: use __u64 from linux/types.h Mikko Rapeli
                   ` (77 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Sebastian Reichel, linux-api

Fixes userspace compilation errors due to missing timespec definition.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/hsi/cs-protocol.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/hsi/cs-protocol.h b/include/uapi/linux/hsi/cs-protocol.h
index 4957bba..05460ef 100644
--- a/include/uapi/linux/hsi/cs-protocol.h
+++ b/include/uapi/linux/hsi/cs-protocol.h
@@ -26,6 +26,7 @@
 
 #include <linux/types.h>
 #include <linux/ioctl.h>
+#include <linux/time.h>
 
 /* chardev parameters */
 #define CS_DEV_FILE_NAME		"/dev/cmt_speech"
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 22/98] ebtables.h: use __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (20 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 21/98] include/uapi/linux/hsi/cs-protocol.h: include linux/time.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 23/98] cld.h: use __u8, __u16, __s16, __u32 and __s64 " Mikko Rapeli
                   ` (76 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Arturo Borrero Gonzalez, Pablo Neira Ayuso, linux-api

Fixes userspace compilation error:

linux/netfilter_bridge/ebtables.h:38:2: error: unknown type name ‘uint64_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter_bridge/ebtables.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/netfilter_bridge/ebtables.h b/include/uapi/linux/netfilter_bridge/ebtables.h
index 773dfe8..461145e 100644
--- a/include/uapi/linux/netfilter_bridge/ebtables.h
+++ b/include/uapi/linux/netfilter_bridge/ebtables.h
@@ -12,6 +12,8 @@
 
 #ifndef _UAPI__LINUX_BRIDGE_EFF_H
 #define _UAPI__LINUX_BRIDGE_EFF_H
+#include <linux/types.h>
+#include <linux/if.h>
 #include <linux/netfilter_bridge.h>
 
 #define EBT_TABLE_MAXNAMELEN 32
@@ -33,8 +35,8 @@ struct xt_match;
 struct xt_target;
 
 struct ebt_counter {
-	uint64_t pcnt;
-	uint64_t bcnt;
+	__u64 pcnt;
+	__u64 bcnt;
 };
 
 struct ebt_replace {
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 23/98] cld.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (21 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 22/98] ebtables.h: use __u64 from linux/types.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 24/98] rds.h: " Mikko Rapeli
                   ` (75 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, J. Bruce Fields, linux-nfs, linux-api

Fixes userspace compilation errors like:

linux/nfsd/cld.h:40:2: error: unknown type name ‘uint16_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/nfsd/cld.h | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/include/uapi/linux/nfsd/cld.h b/include/uapi/linux/nfsd/cld.h
index f14a9ab..d9f2306 100644
--- a/include/uapi/linux/nfsd/cld.h
+++ b/include/uapi/linux/nfsd/cld.h
@@ -22,6 +22,8 @@
 #ifndef _NFSD_CLD_H
 #define _NFSD_CLD_H
 
+#include <linux/types.h>
+
 /* latest upcall version available */
 #define CLD_UPCALL_VERSION 1
 
@@ -37,18 +39,18 @@ enum cld_command {
 
 /* representation of long-form NFSv4 client ID */
 struct cld_name {
-	uint16_t	cn_len;				/* length of cm_id */
+	__u16	cn_len;				/* length of cm_id */
 	unsigned char	cn_id[NFS4_OPAQUE_LIMIT];	/* client-provided */
 } __attribute__((packed));
 
 /* message struct for communication with userspace */
 struct cld_msg {
-	uint8_t		cm_vers;		/* upcall version */
-	uint8_t		cm_cmd;			/* upcall command */
-	int16_t		cm_status;		/* return code */
-	uint32_t	cm_xid;			/* transaction id */
+	__u8		cm_vers;		/* upcall version */
+	__u8		cm_cmd;			/* upcall command */
+	__s16		cm_status;		/* return code */
+	__u32	cm_xid;			/* transaction id */
 	union {
-		int64_t		cm_gracetime;	/* grace period start time */
+		__s64		cm_gracetime;	/* grace period start time */
 		struct cld_name	cm_name;
 	} __attribute__((packed)) cm_u;
 } __attribute__((packed));
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 24/98] rds.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (22 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 23/98] cld.h: use __u8, __u16, __s16, __u32 and __s64 " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 25/98] sctp.h: use __u8 and __u32 " Mikko Rapeli
                   ` (74 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compilation errors like:

linux/rds.h:96:2: error: unknown type name ‘uint8_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/rds.h | 102 +++++++++++++++++++++++------------------------
 1 file changed, 51 insertions(+), 51 deletions(-)

diff --git a/include/uapi/linux/rds.h b/include/uapi/linux/rds.h
index 9195095..0f0da42 100644
--- a/include/uapi/linux/rds.h
+++ b/include/uapi/linux/rds.h
@@ -93,8 +93,8 @@
 #define RDS_INFO_LAST			10010
 
 struct rds_info_counter {
-	uint8_t	name[32];
-	uint64_t	value;
+	__u8	name[32];
+	__u64	value;
 } __attribute__((packed));
 
 #define RDS_INFO_CONNECTION_FLAG_SENDING	0x01
@@ -104,35 +104,35 @@ struct rds_info_counter {
 #define TRANSNAMSIZ	16
 
 struct rds_info_connection {
-	uint64_t	next_tx_seq;
-	uint64_t	next_rx_seq;
+	__u64	next_tx_seq;
+	__u64	next_rx_seq;
 	__be32		laddr;
 	__be32		faddr;
-	uint8_t	transport[TRANSNAMSIZ];		/* null term ascii */
-	uint8_t	flags;
+	__u8	transport[TRANSNAMSIZ];		/* null term ascii */
+	__u8	flags;
 } __attribute__((packed));
 
 #define RDS_INFO_MESSAGE_FLAG_ACK               0x01
 #define RDS_INFO_MESSAGE_FLAG_FAST_ACK          0x02
 
 struct rds_info_message {
-	uint64_t	seq;
-	uint32_t	len;
+	__u64	seq;
+	__u32	len;
 	__be32		laddr;
 	__be32		faddr;
 	__be16		lport;
 	__be16		fport;
-	uint8_t	flags;
+	__u8	flags;
 } __attribute__((packed));
 
 struct rds_info_socket {
-	uint32_t	sndbuf;
+	__u32	sndbuf;
 	__be32		bound_addr;
 	__be32		connected_addr;
 	__be16		bound_port;
 	__be16		connected_port;
-	uint32_t	rcvbuf;
-	uint64_t	inum;
+	__u32	rcvbuf;
+	__u64	inum;
 } __attribute__((packed));
 
 struct rds_info_tcp_socket {
@@ -140,25 +140,25 @@ struct rds_info_tcp_socket {
 	__be16          local_port;
 	__be32          peer_addr;
 	__be16          peer_port;
-	uint64_t       hdr_rem;
-	uint64_t       data_rem;
-	uint32_t       last_sent_nxt;
-	uint32_t       last_expected_una;
-	uint32_t       last_seen_una;
+	__u64       hdr_rem;
+	__u64       data_rem;
+	__u32       last_sent_nxt;
+	__u32       last_expected_una;
+	__u32       last_seen_una;
 } __attribute__((packed));
 
 #define RDS_IB_GID_LEN	16
 struct rds_info_rdma_connection {
 	__be32		src_addr;
 	__be32		dst_addr;
-	uint8_t		src_gid[RDS_IB_GID_LEN];
-	uint8_t		dst_gid[RDS_IB_GID_LEN];
+	__u8		src_gid[RDS_IB_GID_LEN];
+	__u8		dst_gid[RDS_IB_GID_LEN];
 
-	uint32_t	max_send_wr;
-	uint32_t	max_recv_wr;
-	uint32_t	max_send_sge;
-	uint32_t	rdma_mr_max;
-	uint32_t	rdma_mr_size;
+	__u32	max_send_wr;
+	__u32	max_recv_wr;
+	__u32	max_send_sge;
+	__u32	rdma_mr_max;
+	__u32	rdma_mr_size;
 };
 
 /*
@@ -199,70 +199,70 @@ struct rds_info_rdma_connection {
  * (so that the application does not have to worry about
  * alignment).
  */
-typedef uint64_t	rds_rdma_cookie_t;
+typedef __u64	rds_rdma_cookie_t;
 
 struct rds_iovec {
-	uint64_t	addr;
-	uint64_t	bytes;
+	__u64	addr;
+	__u64	bytes;
 };
 
 struct rds_get_mr_args {
 	struct rds_iovec vec;
-	uint64_t	cookie_addr;
-	uint64_t	flags;
+	__u64	cookie_addr;
+	__u64	flags;
 };
 
 struct rds_get_mr_for_dest_args {
 	struct sockaddr_storage	dest_addr;
 	struct rds_iovec 	vec;
-	uint64_t		cookie_addr;
-	uint64_t		flags;
+	__u64		cookie_addr;
+	__u64		flags;
 };
 
 struct rds_free_mr_args {
 	rds_rdma_cookie_t cookie;
-	uint64_t	flags;
+	__u64	flags;
 };
 
 struct rds_rdma_args {
 	rds_rdma_cookie_t cookie;
 	struct rds_iovec remote_vec;
-	uint64_t	local_vec_addr;
-	uint64_t	nr_local;
-	uint64_t	flags;
-	uint64_t	user_token;
+	__u64	local_vec_addr;
+	__u64	nr_local;
+	__u64	flags;
+	__u64	user_token;
 };
 
 struct rds_atomic_args {
 	rds_rdma_cookie_t cookie;
-	uint64_t 	local_addr;
-	uint64_t 	remote_addr;
+	__u64 	local_addr;
+	__u64 	remote_addr;
 	union {
 		struct {
-			uint64_t	compare;
-			uint64_t	swap;
+			__u64	compare;
+			__u64	swap;
 		} cswp;
 		struct {
-			uint64_t	add;
+			__u64	add;
 		} fadd;
 		struct {
-			uint64_t	compare;
-			uint64_t	swap;
-			uint64_t	compare_mask;
-			uint64_t	swap_mask;
+			__u64	compare;
+			__u64	swap;
+			__u64	compare_mask;
+			__u64	swap_mask;
 		} m_cswp;
 		struct {
-			uint64_t	add;
-			uint64_t	nocarry_mask;
+			__u64	add;
+			__u64	nocarry_mask;
 		} m_fadd;
 	};
-	uint64_t	flags;
-	uint64_t	user_token;
+	__u64	flags;
+	__u64	user_token;
 };
 
 struct rds_rdma_notify {
-	uint64_t	user_token;
-	int32_t		status;
+	__u64	user_token;
+	__s32		status;
 };
 
 #define RDS_RDMA_SUCCESS	0
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 25/98] sctp.h: use __u8 and __u32 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (23 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 24/98] rds.h: " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-06-01 13:40   ` Neil Horman
  2015-05-30 15:38 ` [PATCH 26/98] scsi_bsg_fc.h: use __u8, __u32 and __u64 " Mikko Rapeli
                   ` (73 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Vlad Yasevich, Neil Horman, linux-sctp, linux-api

Fixes userspace compilation errors like:

linux/sctp.h:652:2: error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/sctp.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/uapi/linux/sctp.h b/include/uapi/linux/sctp.h
index ce70fe6..dd0a9c2 100644
--- a/include/uapi/linux/sctp.h
+++ b/include/uapi/linux/sctp.h
@@ -718,13 +718,13 @@ struct sctp_authkeyid {
  */
 struct sctp_sack_info {
 	sctp_assoc_t	sack_assoc_id;
-	uint32_t	sack_delay;
-	uint32_t	sack_freq;
+	__u32	sack_delay;
+	__u32	sack_freq;
 };
 
 struct sctp_assoc_value {
     sctp_assoc_t            assoc_id;
-    uint32_t                assoc_value;
+    __u32                assoc_value;
 };
 
 /*
@@ -794,7 +794,7 @@ struct sctp_status {
 struct sctp_authchunks {
 	sctp_assoc_t	gauth_assoc_id;
 	__u32		gauth_number_of_chunks;
-	uint8_t		gauth_chunks[];
+	__u8		gauth_chunks[];
 };
 
 /* The broken spelling has been released already in lksctp-tools header,
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 26/98] scsi_bsg_fc.h: use __u8, __u32 and __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (24 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 25/98] sctp.h: use __u8 and __u32 " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 27/98] scsi_netlink.h: use __u8, __u16 " Mikko Rapeli
                   ` (72 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compilation errors like:

scsi/scsi_bsg_fc.h:83:2: error: unknown type name ‘uint8_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/scsi/scsi_bsg_fc.h | 54 +++++++++++++++++++++--------------------
 1 file changed, 28 insertions(+), 26 deletions(-)

diff --git a/include/uapi/scsi/scsi_bsg_fc.h b/include/uapi/scsi/scsi_bsg_fc.h
index 3031b90..0b3d18a 100644
--- a/include/uapi/scsi/scsi_bsg_fc.h
+++ b/include/uapi/scsi/scsi_bsg_fc.h
@@ -22,6 +22,8 @@
 #ifndef SCSI_BSG_FC_H
 #define SCSI_BSG_FC_H
 
+#include <linux/types.h>
+
 /*
  * This file intended to be included by both kernel and user space
  */
@@ -80,10 +82,10 @@
  * with the transport upon completion of the login.
  */
 struct fc_bsg_host_add_rport {
-	uint8_t		reserved;
+	__u8		reserved;
 
 	/* FC Address Identier of the remote port to login to */
-	uint8_t		port_id[3];
+	__u8		port_id[3];
 };
 
 /* Response:
@@ -101,10 +103,10 @@ struct fc_bsg_host_add_rport {
  * remain logged in with the remote port.
  */
 struct fc_bsg_host_del_rport {
-	uint8_t		reserved;
+	__u8		reserved;
 
 	/* FC Address Identier of the remote port to logout of */
-	uint8_t		port_id[3];
+	__u8		port_id[3];
 };
 
 /* Response:
@@ -125,10 +127,10 @@ struct fc_bsg_host_els {
 	 * ELS Command Code being sent (must be the same as byte 0
 	 * of the payload)
 	 */
-	uint8_t 	command_code;
+	__u8 	command_code;
 
 	/* FC Address Identier of the remote port to send the ELS to */
-	uint8_t		port_id[3];
+	__u8		port_id[3];
 };
 
 /* Response:
@@ -165,14 +167,14 @@ struct fc_bsg_ctels_reply {
 	 * Note: x_RJT/BSY status will indicae that the rjt_data field
 	 *   is valid and contains the reason/explanation values.
 	 */
-	uint32_t	status;		/* See FC_CTELS_STATUS_xxx */
+	__u32	status;		/* See FC_CTELS_STATUS_xxx */
 
 	/* valid if status is not FC_CTELS_STATUS_OK */
 	struct	{
-		uint8_t	action;		/* fragment_id for CT REJECT */
-		uint8_t	reason_code;
-		uint8_t	reason_explanation;
-		uint8_t	vendor_unique;
+		__u8	action;		/* fragment_id for CT REJECT */
+		__u8	reason_code;
+		__u8	reason_explanation;
+		__u8	vendor_unique;
 	} rjt_data;
 };
 
@@ -188,17 +190,17 @@ struct fc_bsg_ctels_reply {
  * and whether to tear it down after the request.
  */
 struct fc_bsg_host_ct {
-	uint8_t		reserved;
+	__u8		reserved;
 
 	/* FC Address Identier of the remote port to send the ELS to */
-	uint8_t		port_id[3];
+	__u8		port_id[3];
 
 	/*
 	 * We need words 0-2 of the generic preamble for the LLD's
 	 */
-	uint32_t	preamble_word0;	/* revision & IN_ID */
-	uint32_t	preamble_word1;	/* GS_Type, GS_SubType, Options, Rsvd */
-	uint32_t	preamble_word2;	/* Cmd Code, Max Size */
+	__u32	preamble_word0;	/* revision & IN_ID */
+	__u32	preamble_word1;	/* GS_Type, GS_SubType, Options, Rsvd */
+	__u32	preamble_word2;	/* Cmd Code, Max Size */
 
 };
 /* Response:
@@ -218,17 +220,17 @@ struct fc_bsg_host_vendor {
 	 * Identifies the vendor that the message is formatted for. This
 	 * should be the recipient of the message.
 	 */
-	uint64_t vendor_id;
+	__u64 vendor_id;
 
 	/* start of vendor command area */
-	uint32_t vendor_cmd[0];
+	__u32 vendor_cmd[0];
 };
 
 /* Response:
  */
 struct fc_bsg_host_vendor_reply {
 	/* start of vendor response area */
-	uint32_t vendor_rsp[0];
+	__u32 vendor_rsp[0];
 };
 
 
@@ -247,7 +249,7 @@ struct fc_bsg_rport_els {
 	 * ELS Command Code being sent (must be the same as
 	 * byte 0 of the payload)
 	 */
-	uint8_t els_code;
+	__u8 els_code;
 };
 
 /* Response:
@@ -265,9 +267,9 @@ struct fc_bsg_rport_ct {
 	/*
 	 * We need words 0-2 of the generic preamble for the LLD's
 	 */
-	uint32_t	preamble_word0;	/* revision & IN_ID */
-	uint32_t	preamble_word1;	/* GS_Type, GS_SubType, Options, Rsvd */
-	uint32_t	preamble_word2;	/* Cmd Code, Max Size */
+	__u32	preamble_word0;	/* revision & IN_ID */
+	__u32	preamble_word1;	/* GS_Type, GS_SubType, Options, Rsvd */
+	__u32	preamble_word2;	/* Cmd Code, Max Size */
 };
 /* Response:
  *
@@ -279,7 +281,7 @@ struct fc_bsg_rport_ct {
 
 /* request (CDB) structure of the sg_io_v4 */
 struct fc_bsg_request {
-	uint32_t msgcode;
+	__u32 msgcode;
 	union {
 		struct fc_bsg_host_add_rport	h_addrport;
 		struct fc_bsg_host_del_rport	h_delrport;
@@ -303,10 +305,10 @@ struct fc_bsg_reply {
 	 *    msg and status fields. The per-msgcode reply structure
 	 *    will contain valid data.
 	 */
-	uint32_t result;
+	__u32 result;
 
 	/* If there was reply_payload, how much was recevied ? */
-	uint32_t reply_payload_rcv_len;
+	__u32 reply_payload_rcv_len;
 
 	union {
 		struct fc_bsg_host_vendor_reply		vendor_reply;
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 27/98] scsi_netlink.h: use __u8, __u16 and __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (25 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 26/98] scsi_bsg_fc.h: use __u8, __u32 and __u64 " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 28/98] scsi_netlink_fc.h: use __u16, __u32 " Mikko Rapeli
                   ` (71 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compilation errors like:

scsi/scsi_netlink.h:43:2: error: unknown type name ‘uint8_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/scsi/scsi_netlink.h | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/include/uapi/scsi/scsi_netlink.h b/include/uapi/scsi/scsi_netlink.h
index 62b4eda..36b53a76 100644
--- a/include/uapi/scsi/scsi_netlink.h
+++ b/include/uapi/scsi/scsi_netlink.h
@@ -22,8 +22,8 @@
 #ifndef SCSI_NETLINK_H
 #define SCSI_NETLINK_H
 
-#include <linux/netlink.h>
 #include <linux/types.h>
+#include <linux/netlink.h>
 
 /*
  * This file intended to be included by both kernel and user space
@@ -40,12 +40,12 @@
 
 /* SCSI_TRANSPORT_MSG event message header */
 struct scsi_nl_hdr {
-	uint8_t version;
-	uint8_t transport;
-	uint16_t magic;
-	uint16_t msgtype;
-	uint16_t msglen;
-} __attribute__((aligned(sizeof(uint64_t))));
+	__u8 version;
+	__u8 transport;
+	__u16 magic;
+	__u16 msgtype;
+	__u16 msglen;
+} __attribute__((aligned(sizeof(__u64))));
 
 /* scsi_nl_hdr->version value */
 #define SCSI_NL_VERSION				1
@@ -89,10 +89,10 @@ struct scsi_nl_hdr {
  */
 struct scsi_nl_host_vendor_msg {
 	struct scsi_nl_hdr snlh;		/* must be 1st element ! */
-	uint64_t vendor_id;
-	uint16_t host_no;
-	uint16_t vmsg_datalen;
-} __attribute__((aligned(sizeof(uint64_t))));
+	__u64 vendor_id;
+	__u16 host_no;
+	__u16 vmsg_datalen;
+} __attribute__((aligned(sizeof(__u64))));
 
 
 /*
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 28/98] scsi_netlink_fc.h: use __u16, __u32 and __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (26 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 27/98] scsi_netlink.h: use __u8, __u16 " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 29/98] scsi_netlink_fc.h: include stdint.h in userspace Mikko Rapeli
                   ` (70 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compilation errors like:

scsi/scsi_netlink_fc.h:60:2: error: expected specifier-qualifier-list before ‘uint64_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/scsi/scsi_netlink_fc.h | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/include/uapi/scsi/scsi_netlink_fc.h b/include/uapi/scsi/scsi_netlink_fc.h
index cbf76e4..2493a0f 100644
--- a/include/uapi/scsi/scsi_netlink_fc.h
+++ b/include/uapi/scsi/scsi_netlink_fc.h
@@ -57,14 +57,14 @@
  */
 struct fc_nl_event {
 	struct scsi_nl_hdr snlh;		/* must be 1st element ! */
-	uint64_t seconds;
-	uint64_t vendor_id;
-	uint16_t host_no;
-	uint16_t event_datalen;
-	uint32_t event_num;
-	uint32_t event_code;
-	uint32_t event_data;
-} __attribute__((aligned(sizeof(uint64_t))));
+	__u64 seconds;
+	__u64 vendor_id;
+	__u16 host_no;
+	__u16 event_datalen;
+	__u32 event_num;
+	__u32 event_code;
+	__u32 event_data;
+} __attribute__((aligned(sizeof(__u64))));
 
 
 #endif /* SCSI_NETLINK_FC_H */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 29/98] scsi_netlink_fc.h: include stdint.h in userspace
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (27 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 28/98] scsi_netlink_fc.h: use __u16, __u32 " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 20:17   ` Frans Klaver
  2015-05-30 15:38 ` [PATCH 30/98] hdspm.h: use __u8, __u32 and __u64 from linux/types.h Mikko Rapeli
                   ` (69 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes compilation error:

scsi/scsi_netlink_fc.h:60:2: error: expected specifier-qualifier-list before ‘uint64_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/scsi/scsi_netlink_fc.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/include/uapi/scsi/scsi_netlink_fc.h b/include/uapi/scsi/scsi_netlink_fc.h
index 2493a0f..b857e34 100644
--- a/include/uapi/scsi/scsi_netlink_fc.h
+++ b/include/uapi/scsi/scsi_netlink_fc.h
@@ -21,6 +21,11 @@
 #ifndef SCSI_NETLINK_FC_H
 #define SCSI_NETLINK_FC_H
 
+#ifdef __KERNEL__
+#include <linux/types.h>
+#else
+#include <stdint.h>
+#endif
 #include <scsi/scsi_netlink.h>
 
 /*
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 30/98] hdspm.h: use __u8, __u32 and __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (28 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 29/98] scsi_netlink_fc.h: include stdint.h in userspace Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-31  7:11   ` Takashi Iwai
  2015-05-30 15:38 ` [PATCH 31/98] gntalloc.h: use __u16, " Mikko Rapeli
                   ` (68 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Jaroslav Kysela, Takashi Iwai, alsa-devel, linux-api

Fixes userspace compilation errors like:

sound/hdspm.h:43:2: error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/sound/hdspm.h | 40 ++++++++++++++++++----------------------
 1 file changed, 18 insertions(+), 22 deletions(-)

diff --git a/include/uapi/sound/hdspm.h b/include/uapi/sound/hdspm.h
index 5737332..c4db6f5 100644
--- a/include/uapi/sound/hdspm.h
+++ b/include/uapi/sound/hdspm.h
@@ -20,11 +20,7 @@
  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#ifdef __KERNEL__
 #include <linux/types.h>
-#else
-#include <stdint.h>
-#endif
 
 /* Maximum channels is 64 even on 56Mode you have 64playbacks to matrix */
 #define HDSPM_MAX_CHANNELS      64
@@ -46,15 +42,15 @@ enum hdspm_speed {
 /* -------------------- IOCTL Peak/RMS Meters -------------------- */
 
 struct hdspm_peak_rms {
-	uint32_t input_peaks[64];
-	uint32_t playback_peaks[64];
-	uint32_t output_peaks[64];
+	__u32 input_peaks[64];
+	__u32 playback_peaks[64];
+	__u32 output_peaks[64];
 
-	uint64_t input_rms[64];
-	uint64_t playback_rms[64];
-	uint64_t output_rms[64];
+	__u64 input_rms[64];
+	__u64 playback_rms[64];
+	__u64 output_rms[64];
 
-	uint8_t speed; /* enum {ss, ds, qs} */
+	__u8 speed; /* enum {ss, ds, qs} */
 	int status2;
 };
 
@@ -155,21 +151,21 @@ enum hdspm_syncsource {
 };
 
 struct hdspm_status {
-	uint8_t card_type; /* enum hdspm_io_type */
+	__u8 card_type; /* enum hdspm_io_type */
 	enum hdspm_syncsource autosync_source;
 
-	uint64_t card_clock;
-	uint32_t master_period;
+	__u64 card_clock;
+	__u32 master_period;
 
 	union {
 		struct {
-			uint8_t sync_wc; /* enum hdspm_sync */
-			uint8_t sync_madi; /* enum hdspm_sync */
-			uint8_t sync_tco; /* enum hdspm_sync */
-			uint8_t sync_in; /* enum hdspm_sync */
-			uint8_t madi_input; /* enum hdspm_madi_input */
-			uint8_t channel_format; /* enum hdspm_madi_channel_format */
-			uint8_t frame_format; /* enum hdspm_madi_frame_format */
+			__u8 sync_wc; /* enum hdspm_sync */
+			__u8 sync_madi; /* enum hdspm_sync */
+			__u8 sync_tco; /* enum hdspm_sync */
+			__u8 sync_in; /* enum hdspm_sync */
+			__u8 madi_input; /* enum hdspm_madi_input */
+			__u8 channel_format; /* enum hdspm_madi_channel_format */
+			__u8 frame_format; /* enum hdspm_madi_frame_format */
 		} madi;
 	} card_specific;
 };
@@ -184,7 +180,7 @@ struct hdspm_status {
 #define HDSPM_ADDON_TCO 1
 
 struct hdspm_version {
-	uint8_t card_type; /* enum hdspm_io_type */
+	__u8 card_type; /* enum hdspm_io_type */
 	char cardname[20];
 	unsigned int serial;
 	unsigned short firmware_rev;
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 31/98] gntalloc.h: use __u16, __u32 and __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (29 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 30/98] hdspm.h: use __u8, __u32 and __u64 from linux/types.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 32/98] gntdev.h: use " Mikko Rapeli
                   ` (67 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Konrad Rzeszutek Wilk, Boris Ostrovsky,
	David Vrabel, xen-devel, linux-api

Fixes userspace compilation errors like:

xen/gntalloc.h:22:2: error: unknown type name ‘uint16_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/xen/gntalloc.h | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/include/uapi/xen/gntalloc.h b/include/uapi/xen/gntalloc.h
index 76bd580..48d2790 100644
--- a/include/uapi/xen/gntalloc.h
+++ b/include/uapi/xen/gntalloc.h
@@ -11,6 +11,8 @@
 #ifndef __LINUX_PUBLIC_GNTALLOC_H__
 #define __LINUX_PUBLIC_GNTALLOC_H__
 
+#include <linux/types.h>
+
 /*
  * Allocates a new page and creates a new grant reference.
  */
@@ -19,17 +21,17 @@ _IOC(_IOC_NONE, 'G', 5, sizeof(struct ioctl_gntalloc_alloc_gref))
 struct ioctl_gntalloc_alloc_gref {
 	/* IN parameters */
 	/* The ID of the domain to be given access to the grants. */
-	uint16_t domid;
+	__u16 domid;
 	/* Flags for this mapping */
-	uint16_t flags;
+	__u16 flags;
 	/* Number of pages to map */
-	uint32_t count;
+	__u32 count;
 	/* OUT parameters */
 	/* The offset to be used on a subsequent call to mmap(). */
-	uint64_t index;
+	__u64 index;
 	/* The grant references of the newly created grant, one per page */
 	/* Variable size, depending on count */
-	uint32_t gref_ids[1];
+	__u32 gref_ids[1];
 };
 
 #define GNTALLOC_FLAG_WRITABLE 1
@@ -43,9 +45,9 @@ _IOC(_IOC_NONE, 'G', 6, sizeof(struct ioctl_gntalloc_dealloc_gref))
 struct ioctl_gntalloc_dealloc_gref {
 	/* IN parameters */
 	/* The offset returned in the map operation */
-	uint64_t index;
+	__u64 index;
 	/* Number of references to unmap */
-	uint32_t count;
+	__u32 count;
 };
 
 /*
@@ -67,11 +69,11 @@ struct ioctl_gntalloc_unmap_notify {
 	 * be cleared. Otherwise, it can be any byte in the page whose
 	 * notification we are adjusting.
 	 */
-	uint64_t index;
+	__u64 index;
 	/* Action(s) to take on unmap */
-	uint32_t action;
+	__u32 action;
 	/* Event channel to notify */
-	uint32_t event_channel_port;
+	__u32 event_channel_port;
 };
 
 /* Clear (set to zero) the byte specified by index */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 32/98] gntdev.h: use __u32 and __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (30 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 31/98] gntalloc.h: use __u16, " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 33/98] include/uapi/linux/sysctl.h: use __kernel_size_t instead of size_t Mikko Rapeli
                   ` (66 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Konrad Rzeszutek Wilk, Boris Ostrovsky,
	David Vrabel, xen-devel, linux-api

Fixes userspace compilation errors like:

xen/gntdev.h:38:2: error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/xen/gntdev.h | 34 ++++++++++++++++++----------------
 1 file changed, 18 insertions(+), 16 deletions(-)

diff --git a/include/uapi/xen/gntdev.h b/include/uapi/xen/gntdev.h
index 5304bd3..aa7610a 100644
--- a/include/uapi/xen/gntdev.h
+++ b/include/uapi/xen/gntdev.h
@@ -33,11 +33,13 @@
 #ifndef __LINUX_PUBLIC_GNTDEV_H__
 #define __LINUX_PUBLIC_GNTDEV_H__
 
+#include <linux/types.h>
+
 struct ioctl_gntdev_grant_ref {
 	/* The domain ID of the grant to be mapped. */
-	uint32_t domid;
+	__u32 domid;
 	/* The grant reference of the grant to be mapped. */
-	uint32_t ref;
+	__u32 ref;
 };
 
 /*
@@ -50,11 +52,11 @@ _IOC(_IOC_NONE, 'G', 0, sizeof(struct ioctl_gntdev_map_grant_ref))
 struct ioctl_gntdev_map_grant_ref {
 	/* IN parameters */
 	/* The number of grants to be mapped. */
-	uint32_t count;
-	uint32_t pad;
+	__u32 count;
+	__u32 pad;
 	/* OUT parameters */
 	/* The offset to be used on a subsequent call to mmap(). */
-	uint64_t index;
+	__u64 index;
 	/* Variable IN parameter. */
 	/* Array of grant references, of size @count. */
 	struct ioctl_gntdev_grant_ref refs[1];
@@ -70,10 +72,10 @@ _IOC(_IOC_NONE, 'G', 1, sizeof(struct ioctl_gntdev_unmap_grant_ref))
 struct ioctl_gntdev_unmap_grant_ref {
 	/* IN parameters */
 	/* The offset was returned by the corresponding map operation. */
-	uint64_t index;
+	__u64 index;
 	/* The number of pages to be unmapped. */
-	uint32_t count;
-	uint32_t pad;
+	__u32 count;
+	__u32 pad;
 };
 
 /*
@@ -93,13 +95,13 @@ _IOC(_IOC_NONE, 'G', 2, sizeof(struct ioctl_gntdev_get_offset_for_vaddr))
 struct ioctl_gntdev_get_offset_for_vaddr {
 	/* IN parameters */
 	/* The virtual address of the first mapped page in a range. */
-	uint64_t vaddr;
+	__u64 vaddr;
 	/* OUT parameters */
 	/* The offset that was used in the initial mmap() operation. */
-	uint64_t offset;
+	__u64 offset;
 	/* The number of pages mapped in the VM area that begins at @vaddr. */
-	uint32_t count;
-	uint32_t pad;
+	__u32 count;
+	__u32 pad;
 };
 
 /*
@@ -113,7 +115,7 @@ _IOC(_IOC_NONE, 'G', 3, sizeof(struct ioctl_gntdev_set_max_grants))
 struct ioctl_gntdev_set_max_grants {
 	/* IN parameter */
 	/* The maximum number of grants that may be mapped at once. */
-	uint32_t count;
+	__u32 count;
 };
 
 /*
@@ -135,11 +137,11 @@ struct ioctl_gntdev_unmap_notify {
 	 * be cleared. Otherwise, it can be any byte in the page whose
 	 * notification we are adjusting.
 	 */
-	uint64_t index;
+	__u64 index;
 	/* Action(s) to take on unmap */
-	uint32_t action;
+	__u32 action;
 	/* Event channel to notify */
-	uint32_t event_channel_port;
+	__u32 event_channel_port;
 };
 
 /* Clear (set to zero) the byte specified by index */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 33/98] include/uapi/linux/sysctl.h: use __kernel_size_t instead of size_t
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (31 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 32/98] gntdev.h: use " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 34/98] include/uapi/asm-generic/ipcbuf.h: include linux/posix_types.h Mikko Rapeli
                   ` (65 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Yasuaki Ishimatsu, Ben Greear, Prarit Bhargava,
	Andrew Morton, David S. Miller, linux-api

Fixes userspace compilation error:

error: unknown type name ‘size_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/sysctl.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/sysctl.h b/include/uapi/linux/sysctl.h
index 0956373..6595f3a 100644
--- a/include/uapi/linux/sysctl.h
+++ b/include/uapi/linux/sysctl.h
@@ -37,9 +37,9 @@ struct __sysctl_args {
 	int __user *name;
 	int nlen;
 	void __user *oldval;
-	size_t __user *oldlenp;
+	__kernel_size_t __user *oldlenp;
 	void __user *newval;
-	size_t newlen;
+	__kernel_size_t newlen;
 	unsigned long __unused[4];
 };
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 34/98] include/uapi/asm-generic/ipcbuf.h: include linux/posix_types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (32 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 33/98] include/uapi/linux/sysctl.h: use __kernel_size_t instead of size_t Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 35/98] include/uapi/asm-generic/msgbuf.h: include asm/ipcbuf.h Mikko Rapeli
                   ` (64 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Arnd Bergmann, linux-arch, linux-api

Fixes userspace compilation error:

error: unknown type name ‘__kernel_key_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/asm-generic/ipcbuf.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/asm-generic/ipcbuf.h b/include/uapi/asm-generic/ipcbuf.h
index 3dbcc1e..909f825 100644
--- a/include/uapi/asm-generic/ipcbuf.h
+++ b/include/uapi/asm-generic/ipcbuf.h
@@ -1,6 +1,8 @@
 #ifndef __ASM_GENERIC_IPCBUF_H
 #define __ASM_GENERIC_IPCBUF_H
 
+#include <linux/posix_types.h>
+
 /*
  * The generic ipc64_perm structure:
  * Note extra padding because this structure is passed back and forth
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 35/98] include/uapi/asm-generic/msgbuf.h: include asm/ipcbuf.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (33 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 34/98] include/uapi/asm-generic/ipcbuf.h: include linux/posix_types.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 36/98] include/uapi/asm-generic/shmbuf.h: include fixes Mikko Rapeli
                   ` (63 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Arnd Bergmann, linux-arch, linux-api

Fixes userspace compilation errors like:

error: field ‘msg_perm’ has incomplete type
struct ipc64_perm msg_perm

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/asm-generic/msgbuf.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/asm-generic/msgbuf.h b/include/uapi/asm-generic/msgbuf.h
index f55ecc4..f5fbd8e 100644
--- a/include/uapi/asm-generic/msgbuf.h
+++ b/include/uapi/asm-generic/msgbuf.h
@@ -2,6 +2,8 @@
 #define __ASM_GENERIC_MSGBUF_H
 
 #include <asm/bitsperlong.h>
+#include <asm/ipcbuf.h>
+
 /*
  * generic msqid64_ds structure.
  *
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 36/98] include/uapi/asm-generic/shmbuf.h: include fixes
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (34 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 35/98] include/uapi/asm-generic/msgbuf.h: include asm/ipcbuf.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 37/98] asm-generic/sembuf.h: include asm/posix_types.h and asm/ipcbuf.h Mikko Rapeli
                   ` (62 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Arnd Bergmann, linux-arch, linux-api

Include linux/types.h and asm/msgbuf.h and use __kernel_size_t instead
of size_t.

Fixes userspace compilation errors like:

error: field ‘shm_perm’ has incomplete type
struct ipc64_perm shm_perm; /* operation perms */
error: unknown type name ‘size_t’
error: unknown type name ‘__kernel_time_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/asm-generic/shmbuf.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/include/uapi/asm-generic/shmbuf.h b/include/uapi/asm-generic/shmbuf.h
index 7e9fb2f..ae867ad 100644
--- a/include/uapi/asm-generic/shmbuf.h
+++ b/include/uapi/asm-generic/shmbuf.h
@@ -1,7 +1,9 @@
 #ifndef __ASM_GENERIC_SHMBUF_H
 #define __ASM_GENERIC_SHMBUF_H
 
+#include <linux/types.h>
 #include <asm/bitsperlong.h>
+#include <asm/msgbuf.h>
 
 /*
  * The shmid64_ds structure for x86 architecture.
@@ -24,7 +26,7 @@
 
 struct shmid64_ds {
 	struct ipc64_perm	shm_perm;	/* operation perms */
-	size_t			shm_segsz;	/* size of segment (bytes) */
+	__kernel_size_t		shm_segsz;	/* size of segment (bytes) */
 	__kernel_time_t		shm_atime;	/* last attach time */
 #if __BITS_PER_LONG != 64
 	unsigned long		__unused1;
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 37/98] asm-generic/sembuf.h: include asm/posix_types.h and asm/ipcbuf.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (35 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 36/98] include/uapi/asm-generic/shmbuf.h: include fixes Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 38/98] include/uapi/asm-generic/signal.h: use __kernel_size_t instead of size_t Mikko Rapeli
                   ` (61 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Arnd Bergmann, linux-arch, linux-api

Fixes userspace compilation errors like:

error: field ‘msg_perm’ has incomplete type
struct ipc64_perm msg_perm;
error: unknown type name ‘__kernel_ulong_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/asm-generic/sembuf.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/asm-generic/sembuf.h b/include/uapi/asm-generic/sembuf.h
index 4cb2c13..17d523f 100644
--- a/include/uapi/asm-generic/sembuf.h
+++ b/include/uapi/asm-generic/sembuf.h
@@ -2,6 +2,8 @@
 #define __ASM_GENERIC_SEMBUF_H
 
 #include <asm/bitsperlong.h>
+#include <asm/posix_types.h>
+#include <asm/ipcbuf.h>
 
 /*
  * The semid64_ds structure for x86 architecture.
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 38/98] include/uapi/asm-generic/signal.h: use __kernel_size_t instead of size_t
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (36 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 37/98] asm-generic/sembuf.h: include asm/posix_types.h and asm/ipcbuf.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 39/98] include/uapi/linux/socket.h: include sys/socket.h in userspace Mikko Rapeli
                   ` (60 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Arnd Bergmann, linux-arch, linux-api

Fixes userspace compiler error:

error: unknown type name ‘size_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/asm-generic/signal.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/asm-generic/signal.h b/include/uapi/asm-generic/signal.h
index 9df61f1..0a7c415 100644
--- a/include/uapi/asm-generic/signal.h
+++ b/include/uapi/asm-generic/signal.h
@@ -111,7 +111,7 @@ struct sigaction {
 typedef struct sigaltstack {
 	void __user *ss_sp;
 	int ss_flags;
-	size_t ss_size;
+	__kernel_size_t ss_size;
 } stack_t;
 
 #endif /* __ASSEMBLY__ */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 39/98] include/uapi/linux/socket.h: include sys/socket.h in userspace
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (37 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 38/98] include/uapi/asm-generic/signal.h: use __kernel_size_t instead of size_t Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 40/98] include/uapi/linux/rds.h: include linux/socket.h and linux/types.h Mikko Rapeli
                   ` (59 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

This libc header has sockaddr definition for userspace.

Fixes userspace compilation errors like these from kernel headers including
only linux/socket.h:

error: field ‘ifru_addr’ has incomplete type
struct sockaddr ifru_addr;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/socket.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/uapi/linux/socket.h b/include/uapi/linux/socket.h
index 76ab0c6..8a81197 100644
--- a/include/uapi/linux/socket.h
+++ b/include/uapi/linux/socket.h
@@ -1,6 +1,10 @@
 #ifndef _UAPI_LINUX_SOCKET_H
 #define _UAPI_LINUX_SOCKET_H
 
+#ifndef __KERNEL__
+#include <sys/socket.h>
+#endif
+
 /*
  * Desired design of maximum size and alignment (see RFC2553)
  */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 40/98] include/uapi/linux/rds.h: include linux/socket.h and linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (38 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 39/98] include/uapi/linux/socket.h: include sys/socket.h in userspace Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 41/98] include/uapi/linux/if_pppox.h: include linux/if.h Mikko Rapeli
                   ` (58 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compilation errors like:

error: unknown type name ‘__be32’
error: field ‘dest_addr’ has incomplete type
   struct sockaddr_storage dest_addr;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/rds.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/rds.h b/include/uapi/linux/rds.h
index 0f0da42..0b2ff1f 100644
--- a/include/uapi/linux/rds.h
+++ b/include/uapi/linux/rds.h
@@ -35,6 +35,7 @@
 #define _LINUX_RDS_H
 
 #include <linux/types.h>
+#include <linux/socket.h>
 
 #define RDS_IB_ABI_VERSION		0x301
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 41/98] include/uapi/linux/if_pppox.h: include linux/if.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (39 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 40/98] include/uapi/linux/rds.h: include linux/socket.h and linux/types.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 42/98] include/uapi/linux/if_tunnel.h: include linux/if.h, linux/ip.h and linux/in6.h Mikko Rapeli
                   ` (57 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, netdev, linux-api

Fixes userspace compilation error:

error: ‘IFNAMSIZ’ undeclared here (not in a function)

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/if_pppox.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/if_pppox.h b/include/uapi/linux/if_pppox.h
index e128769..473c3c4 100644
--- a/include/uapi/linux/if_pppox.h
+++ b/include/uapi/linux/if_pppox.h
@@ -21,6 +21,7 @@
 #include <asm/byteorder.h>
 
 #include <linux/socket.h>
+#include <linux/if.h>
 #include <linux/if_ether.h>
 #include <linux/if_pppol2tp.h>
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 42/98] include/uapi/linux/if_tunnel.h: include linux/if.h, linux/ip.h and linux/in6.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (40 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 41/98] include/uapi/linux/if_pppox.h: include linux/if.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 43/98] include/uapi/linux/hdlc/ioctl.h: include linux/if.h Mikko Rapeli
                   ` (56 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, David S. Miller, Tom Herbert, Dmitry Popov, netdev,
	linux-api

Fixes userspace compilation errors like:

error: field ‘iph’ has incomplete type
error: field ‘prefix’ has incomplete type

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/if_tunnel.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h
index bd3cc11..2a36080 100644
--- a/include/uapi/linux/if_tunnel.h
+++ b/include/uapi/linux/if_tunnel.h
@@ -2,6 +2,9 @@
 #define _UAPI_IF_TUNNEL_H_
 
 #include <linux/types.h>
+#include <linux/if.h>
+#include <linux/ip.h>
+#include <linux/in6.h>
 #include <asm/byteorder.h>
 
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 43/98] include/uapi/linux/hdlc/ioctl.h: include linux/if.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (41 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 42/98] include/uapi/linux/if_tunnel.h: include linux/if.h, linux/ip.h and linux/in6.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 20:22   ` Frans Klaver
  2015-05-30 15:38 ` [PATCH 44/98] nf_conntrack_tuple_common.h: include linux/types.h and linux/netfilter.h Mikko Rapeli
                   ` (55 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compiler error:

error: ‘IFNAMSIZ’ undeclared here (not in a function)

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/hdlc/ioctl.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/hdlc/ioctl.h b/include/uapi/linux/hdlc/ioctl.h
index 04bc027..8bbee11 100644
--- a/include/uapi/linux/hdlc/ioctl.h
+++ b/include/uapi/linux/hdlc/ioctl.h
@@ -1,6 +1,7 @@
 #ifndef __HDLC_IOCTL_H__
 #define __HDLC_IOCTL_H__
 
+#include <linux/if.h>
 
 #define GENERIC_HDLC_VERSION 4	/* For synchronization with sethdlc utility */
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 44/98] nf_conntrack_tuple_common.h: include linux/types.h and linux/netfilter.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (42 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 43/98] include/uapi/linux/hdlc/ioctl.h: include linux/if.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 45/98] include/uapi/linux/ipv6_route.h: include linux/in6.h Mikko Rapeli
                   ` (54 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compilation errors like:
error: unknown type name ‘__be16’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/nf_conntrack_tuple_common.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/uapi/linux/netfilter/nf_conntrack_tuple_common.h b/include/uapi/linux/netfilter/nf_conntrack_tuple_common.h
index 2f6bbc5..a9c3834 100644
--- a/include/uapi/linux/netfilter/nf_conntrack_tuple_common.h
+++ b/include/uapi/linux/netfilter/nf_conntrack_tuple_common.h
@@ -1,6 +1,9 @@
 #ifndef _NF_CONNTRACK_TUPLE_COMMON_H
 #define _NF_CONNTRACK_TUPLE_COMMON_H
 
+#include <linux/types.h>
+#include <linux/netfilter.h>
+
 enum ip_conntrack_dir {
 	IP_CT_DIR_ORIGINAL,
 	IP_CT_DIR_REPLY,
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 45/98] include/uapi/linux/ipv6_route.h: include linux/in6.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (43 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 44/98] nf_conntrack_tuple_common.h: include linux/types.h and linux/netfilter.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 46/98] " Mikko Rapeli
                   ` (53 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compile errors like:

error: field ‘mf6cc_origin’ has incomplete type
  struct sockaddr_in6 mf6cc_origin;  /* Origin of mcast */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/mroute6.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/mroute6.h b/include/uapi/linux/mroute6.h
index ce91215..5e17444 100644
--- a/include/uapi/linux/mroute6.h
+++ b/include/uapi/linux/mroute6.h
@@ -3,6 +3,7 @@
 
 #include <linux/types.h>
 #include <linux/sockios.h>
+#include <linux/in6.h>
 
 /*
  *	Based on the MROUTING 3.5 defines primarily to keep
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 46/98] include/uapi/linux/ipv6_route.h: include linux/in6.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (44 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 45/98] include/uapi/linux/ipv6_route.h: include linux/in6.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 47/98] include/uapi/linux/if_pppol2tp.h: include linux/in.h and linux/in6.h Mikko Rapeli
                   ` (52 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compile errors like:

error: field ‘rtmsg_dst’ has incomplete type
  struct in6_addr  rtmsg_dst;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/ipv6_route.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/ipv6_route.h b/include/uapi/linux/ipv6_route.h
index 2be7bd1..e300640 100644
--- a/include/uapi/linux/ipv6_route.h
+++ b/include/uapi/linux/ipv6_route.h
@@ -14,6 +14,7 @@
 #define _UAPI_LINUX_IPV6_ROUTE_H
 
 #include <linux/types.h>
+#include <linux/in6.h>
 
 #define RTF_DEFAULT	0x00010000	/* default - learned via ND	*/
 #define RTF_ALLONLINK	0x00020000	/* (deprecated and will be removed)
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 47/98] include/uapi/linux/if_pppol2tp.h: include linux/in.h and linux/in6.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (45 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 46/98] " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 48/98] include/uapi/linux/if_pppox.h: " Mikko Rapeli
                   ` (51 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, James Chapman, netdev, linux-api

Fixes userspace compilation errors like:

error: field ‘addr’ has incomplete type
 struct sockaddr_in addr; /* IP address and port to send to */
                    ^
error: field ‘addr’ has incomplete type
 struct sockaddr_in6 addr; /* IP address and port to send to */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/if_pppol2tp.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/uapi/linux/if_pppol2tp.h b/include/uapi/linux/if_pppol2tp.h
index 163e8ad..4bd1f55 100644
--- a/include/uapi/linux/if_pppol2tp.h
+++ b/include/uapi/linux/if_pppol2tp.h
@@ -16,7 +16,8 @@
 #define _UAPI__LINUX_IF_PPPOL2TP_H
 
 #include <linux/types.h>
-
+#include <linux/in.h>
+#include <linux/in6.h>
 
 /* Structure used to connect() the socket to a particular tunnel UDP
  * socket over IPv4.
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 48/98] include/uapi/linux/if_pppox.h: include linux/in.h and linux/in6.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (46 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 47/98] include/uapi/linux/if_pppol2tp.h: include linux/in.h and linux/in6.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 49/98] Break dependency loop between linux/if.h and linux/hdlc/ioctl.h Mikko Rapeli
                   ` (50 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, netdev, linux-api

Fixes userspace compilation errors:

error: field ‘addr’ has incomplete type
 struct sockaddr_in addr; /* IP address and port to send to */

error: field ‘addr’ has incomplete type
 struct sockaddr_in6 addr; /* IP address and port to send to */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/if_pppox.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/if_pppox.h b/include/uapi/linux/if_pppox.h
index 473c3c4..d37bbb1 100644
--- a/include/uapi/linux/if_pppox.h
+++ b/include/uapi/linux/if_pppox.h
@@ -24,6 +24,8 @@
 #include <linux/if.h>
 #include <linux/if_ether.h>
 #include <linux/if_pppol2tp.h>
+#include <linux/in.h>
+#include <linux/in6.h>
 
 /* For user-space programs to pick up these definitions
  * which they wouldn't get otherwise without defining __KERNEL__
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 49/98] Break dependency loop between linux/if.h and linux/hdlc/ioctl.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (47 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 48/98] include/uapi/linux/if_pppox.h: " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 19:52   ` Frans Klaver
  2015-05-30 15:38 ` [PATCH 50/98] include/uapi/linux/packet_diag.h: include linux/netdevice.h Mikko Rapeli
                   ` (49 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

This isn't pretty but does the job. I assume including plain linux/hdlc/ioctl.h
without linux/if.h is much more rare than the other way round, and that
these header file names are part of API, and that creating a new header file
just for IFNAMSIZ isn't a good idea either.

Fixes userspace compiler error:

error: ‘IFNAMSIZ’ undeclared here (not in a function)

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/hdlc/ioctl.h | 5 ++++-
 include/uapi/linux/if.h         | 4 ++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/include/uapi/linux/hdlc/ioctl.h b/include/uapi/linux/hdlc/ioctl.h
index 8bbee11..73982ec 100644
--- a/include/uapi/linux/hdlc/ioctl.h
+++ b/include/uapi/linux/hdlc/ioctl.h
@@ -1,7 +1,10 @@
 #ifndef __HDLC_IOCTL_H__
 #define __HDLC_IOCTL_H__
 
-#include <linux/if.h>
+/* For breaking dependency loop between if.h and hdlc/ioctl.h */
+#ifndef IFNAMSIZ
+#define IFNAMSIZ        16
+#endif
 
 #define GENERIC_HDLC_VERSION 4	/* For synchronization with sethdlc utility */
 
diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
index 9cf2394..e4b130a 100644
--- a/include/uapi/linux/if.h
+++ b/include/uapi/linux/if.h
@@ -23,6 +23,10 @@
 #include <linux/socket.h>		/* for "struct sockaddr" et al	*/
 #include <linux/compiler.h>		/* for "__user" et al           */
 
+/**
+ * IFNAMSIZ is also defined in linux/hdlc/ioctl.h if it does not exists
+ * to break dependency loop between linux/if.h and linux/hdlc/ioctl.h.
+ */
 #define	IFNAMSIZ	16
 #define	IFALIASZ	256
 #include <linux/hdlc/ioctl.h>
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 50/98] include/uapi/linux/packet_diag.h: include linux/netdevice.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (48 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 49/98] Break dependency loop between linux/if.h and linux/hdlc/ioctl.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 51/98] include/uapi/linux/llc.h: include linux/if.h Mikko Rapeli
                   ` (48 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compilation error:

error: ‘MAX_ADDR_LEN’ undeclared here (not in a function)

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/packet_diag.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/packet_diag.h b/include/uapi/linux/packet_diag.h
index d08c63f..2a75e97 100644
--- a/include/uapi/linux/packet_diag.h
+++ b/include/uapi/linux/packet_diag.h
@@ -2,6 +2,7 @@
 #define __PACKET_DIAG_H__
 
 #include <linux/types.h>
+#include <linux/netdevice.h>
 
 struct packet_diag_req {
 	__u8	sdiag_family;
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 51/98] include/uapi/linux/llc.h: include linux/if.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (49 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 50/98] include/uapi/linux/packet_diag.h: include linux/netdevice.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 52/98] include/uapi/linux/mqueue.h: include linux/types.h Mikko Rapeli
                   ` (47 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Arnaldo Carvalho de Melo, linux-api

Fixes userspace compile error:

error: ‘IFHWADDRLEN’ undeclared here (not in a function)
 unsigned char   sllc_mac[IFHWADDRLEN];

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/llc.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/llc.h b/include/uapi/linux/llc.h
index 9c987a4..f503599 100644
--- a/include/uapi/linux/llc.h
+++ b/include/uapi/linux/llc.h
@@ -14,6 +14,7 @@
 #define _UAPI__LINUX_LLC_H
 
 #include <linux/socket.h>
+#include <linux/if.h>
 
 #define __LLC_SOCK_SIZE__ 16	/* sizeof(sockaddr_llc), word align. */
 struct sockaddr_llc {
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 52/98] include/uapi/linux/mqueue.h: include linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (50 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 51/98] include/uapi/linux/llc.h: include linux/if.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 53/98] include/uapi/linux/mroute.h: include linux/in.h Mikko Rapeli
                   ` (46 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compile error:

error: unknown type name ‘__kernel_long_t’
 __kernel_long_t mq_flags; /* message queue flags   */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/mqueue.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/mqueue.h b/include/uapi/linux/mqueue.h
index d0a2b8e..bbd5116 100644
--- a/include/uapi/linux/mqueue.h
+++ b/include/uapi/linux/mqueue.h
@@ -18,6 +18,8 @@
 #ifndef _LINUX_MQUEUE_H
 #define _LINUX_MQUEUE_H
 
+#include <linux/types.h>
+
 #define MQ_PRIO_MAX 	32768
 /* per-uid limit of kernel memory used by mqueue, in bytes */
 #define MQ_BYTES_MAX	819200
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 53/98] include/uapi/linux/mroute.h: include linux/in.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (51 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 52/98] include/uapi/linux/mqueue.h: include linux/types.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 54/98] include/uapi/linux/dlm_netlink.h: include linux/dlmconstants.h Mikko Rapeli
                   ` (45 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compile errors like:

error: field ‘vifc_lcl_addr’ has incomplete type
 struct in_addr vifc_lcl_addr;     /* Local interface address */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/mroute.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/mroute.h b/include/uapi/linux/mroute.h
index a382d2c..b1f9428 100644
--- a/include/uapi/linux/mroute.h
+++ b/include/uapi/linux/mroute.h
@@ -3,6 +3,7 @@
 
 #include <linux/sockios.h>
 #include <linux/types.h>
+#include <linux/in.h>
 
 /*
  *	Based on the MROUTING 3.5 defines primarily to keep
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 54/98] include/uapi/linux/dlm_netlink.h: include linux/dlmconstants.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (52 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 53/98] include/uapi/linux/mroute.h: include linux/in.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 55/98] include/uapi/linux/ip6_tunnel.h: include linux/if.h and linux/in6.h Mikko Rapeli
                   ` (44 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compilation error:

error: ‘DLM_RESNAME_MAXLEN’ undeclared here (not in a function)
  char resource_name[DLM_RESNAME_MAXLEN];

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/dlm_netlink.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/dlm_netlink.h b/include/uapi/linux/dlm_netlink.h
index 647c8ef..ef1e2e0 100644
--- a/include/uapi/linux/dlm_netlink.h
+++ b/include/uapi/linux/dlm_netlink.h
@@ -10,6 +10,7 @@
 #define _DLM_NETLINK_H
 
 #include <linux/types.h>
+#include <linux/dlmconstants.h>
 
 enum {
 	DLM_STATUS_WAITING = 1,
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 55/98] include/uapi/linux/ip6_tunnel.h: include linux/if.h and linux/in6.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (53 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 54/98] include/uapi/linux/dlm_netlink.h: include linux/dlmconstants.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 56/98] include/uapi/linux/netfilter.h: include in.h and in6.h Mikko Rapeli
                   ` (43 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compile errors like:

error: ‘IFNAMSIZ’ undeclared here (not in a function)
error: field ‘laddr’ has incomplete type
  struct in6_addr laddr; /* local tunnel end-point address */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/ip6_tunnel.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/ip6_tunnel.h b/include/uapi/linux/ip6_tunnel.h
index 48af63c..21cfd62 100644
--- a/include/uapi/linux/ip6_tunnel.h
+++ b/include/uapi/linux/ip6_tunnel.h
@@ -2,6 +2,8 @@
 #define _IP6_TUNNEL_H
 
 #include <linux/types.h>
+#include <linux/if.h>
+#include <linux/in6.h>
 
 #define IPV6_TLV_TNL_ENCAP_LIMIT 4
 #define IPV6_DEFAULT_TNL_ENCAP_LIMIT 4
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 56/98] include/uapi/linux/netfilter.h: include in.h and in6.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (54 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 55/98] include/uapi/linux/ip6_tunnel.h: include linux/if.h and linux/in6.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 57/98] include/uapi/linux/netfilter_bridge.h: include in.h Mikko Rapeli
                   ` (42 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compile errors like:
error: field ‘in’ has incomplete type
error: field ‘in6’ has incomplete type

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/uapi/linux/netfilter.h b/include/uapi/linux/netfilter.h
index ef1b1f8..750c04e 100644
--- a/include/uapi/linux/netfilter.h
+++ b/include/uapi/linux/netfilter.h
@@ -4,7 +4,8 @@
 #include <linux/types.h>
 #include <linux/compiler.h>
 #include <linux/sysctl.h>
-
+#include <linux/in.h>
+#include <linux/in6.h>
 
 /* Responses from hook functions. */
 #define NF_DROP 0
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 57/98] include/uapi/linux/netfilter_bridge.h: include in.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (55 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 56/98] include/uapi/linux/netfilter.h: include in.h and in6.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 58/98] include/uapi/linux/netfilter_ipv4/ip_tables.h: include linux/if.h Mikko Rapeli
                   ` (41 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compilation errors like:

error: field ‘in’ has incomplete type
struct in_addr in;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter_bridge.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/netfilter_bridge.h b/include/uapi/linux/netfilter_bridge.h
index a5eda6d..514519b 100644
--- a/include/uapi/linux/netfilter_bridge.h
+++ b/include/uapi/linux/netfilter_bridge.h
@@ -4,6 +4,7 @@
 /* bridge-specific defines for netfilter. 
  */
 
+#include <linux/in.h>
 #include <linux/netfilter.h>
 #include <linux/if_ether.h>
 #include <linux/if_vlan.h>
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 58/98] include/uapi/linux/netfilter_ipv4/ip_tables.h: include linux/if.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (56 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 57/98] include/uapi/linux/netfilter_bridge.h: include in.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 59/98] include/uapi/linux/netfilter: include linux/if.h in several headers Mikko Rapeli
                   ` (40 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compilation error:

error: ‘IFNAMSIZ’ undeclared here (not in a function)

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter_ipv4/ip_tables.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/netfilter_ipv4/ip_tables.h b/include/uapi/linux/netfilter_ipv4/ip_tables.h
index f1e6ef2..d0da53d 100644
--- a/include/uapi/linux/netfilter_ipv4/ip_tables.h
+++ b/include/uapi/linux/netfilter_ipv4/ip_tables.h
@@ -17,6 +17,7 @@
 
 #include <linux/types.h>
 #include <linux/compiler.h>
+#include <linux/if.h>
 #include <linux/netfilter_ipv4.h>
 
 #include <linux/netfilter/x_tables.h>
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 59/98] include/uapi/linux/netfilter: include linux/if.h in several headers
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (57 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 58/98] include/uapi/linux/netfilter_ipv4/ip_tables.h: include linux/if.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 60/98] include/uapi/linux/netfilter/xt_osf.h: include linux/ip.h and linux/tcp.h Mikko Rapeli
                   ` (39 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compile errors:

error: ‘IFNAMSIZ’ undeclared here (not in a function)

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/xt_RATEEST.h      | 1 +
 include/uapi/linux/netfilter/xt_hashlimit.h    | 1 +
 include/uapi/linux/netfilter/xt_physdev.h      | 2 +-
 include/uapi/linux/netfilter/xt_rateest.h      | 1 +
 include/uapi/linux/netfilter_arp/arp_tables.h  | 1 +
 include/uapi/linux/netfilter_ipv6/ip6_tables.h | 1 +
 6 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/include/uapi/linux/netfilter/xt_RATEEST.h b/include/uapi/linux/netfilter/xt_RATEEST.h
index 6605e20..ec1b570 100644
--- a/include/uapi/linux/netfilter/xt_RATEEST.h
+++ b/include/uapi/linux/netfilter/xt_RATEEST.h
@@ -2,6 +2,7 @@
 #define _XT_RATEEST_TARGET_H
 
 #include <linux/types.h>
+#include <linux/if.h>
 
 struct xt_rateest_target_info {
 	char			name[IFNAMSIZ];
diff --git a/include/uapi/linux/netfilter/xt_hashlimit.h b/include/uapi/linux/netfilter/xt_hashlimit.h
index cbfc43d..6db90372 100644
--- a/include/uapi/linux/netfilter/xt_hashlimit.h
+++ b/include/uapi/linux/netfilter/xt_hashlimit.h
@@ -2,6 +2,7 @@
 #define _UAPI_XT_HASHLIMIT_H
 
 #include <linux/types.h>
+#include <linux/if.h>
 
 /* timings are in milliseconds. */
 #define XT_HASHLIMIT_SCALE 10000
diff --git a/include/uapi/linux/netfilter/xt_physdev.h b/include/uapi/linux/netfilter/xt_physdev.h
index db7a298..ccdde87 100644
--- a/include/uapi/linux/netfilter/xt_physdev.h
+++ b/include/uapi/linux/netfilter/xt_physdev.h
@@ -2,7 +2,7 @@
 #define _UAPI_XT_PHYSDEV_H
 
 #include <linux/types.h>
-
+#include <linux/if.h>
 
 #define XT_PHYSDEV_OP_IN		0x01
 #define XT_PHYSDEV_OP_OUT		0x02
diff --git a/include/uapi/linux/netfilter/xt_rateest.h b/include/uapi/linux/netfilter/xt_rateest.h
index d40a619..13fe50d 100644
--- a/include/uapi/linux/netfilter/xt_rateest.h
+++ b/include/uapi/linux/netfilter/xt_rateest.h
@@ -2,6 +2,7 @@
 #define _XT_RATEEST_MATCH_H
 
 #include <linux/types.h>
+#include <linux/if.h>
 
 enum xt_rateest_match_flags {
 	XT_RATEEST_MATCH_INVERT	= 1<<0,
diff --git a/include/uapi/linux/netfilter_arp/arp_tables.h b/include/uapi/linux/netfilter_arp/arp_tables.h
index a5a86a4..ece3ad4 100644
--- a/include/uapi/linux/netfilter_arp/arp_tables.h
+++ b/include/uapi/linux/netfilter_arp/arp_tables.h
@@ -11,6 +11,7 @@
 
 #include <linux/types.h>
 #include <linux/compiler.h>
+#include <linux/if.h>
 #include <linux/netfilter_arp.h>
 
 #include <linux/netfilter/x_tables.h>
diff --git a/include/uapi/linux/netfilter_ipv6/ip6_tables.h b/include/uapi/linux/netfilter_ipv6/ip6_tables.h
index 649c680..d1b2265 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6_tables.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6_tables.h
@@ -17,6 +17,7 @@
 
 #include <linux/types.h>
 #include <linux/compiler.h>
+#include <linux/if.h>
 #include <linux/netfilter_ipv6.h>
 
 #include <linux/netfilter/x_tables.h>
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 60/98] include/uapi/linux/netfilter/xt_osf.h: include linux/ip.h and linux/tcp.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (58 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 59/98] include/uapi/linux/netfilter: include linux/if.h in several headers Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 61/98] include/uapi/linux/netfilter_ipv6/ip6t_rt.h: include linux/in6.h Mikko Rapeli
                   ` (38 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compilation errors:

error: ‘MAX_IPOPTLEN’ undeclared here (not in a function)
error: field ‘ip’ has incomplete type
error: field ‘tcp’ has incomplete type

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/xt_osf.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/netfilter/xt_osf.h b/include/uapi/linux/netfilter/xt_osf.h
index 5d66cae..e615995 100644
--- a/include/uapi/linux/netfilter/xt_osf.h
+++ b/include/uapi/linux/netfilter/xt_osf.h
@@ -20,6 +20,8 @@
 #define _XT_OSF_H
 
 #include <linux/types.h>
+#include <linux/ip.h>
+#include <linux/tcp.h>
 
 #define MAXGENRELEN		32
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 61/98] include/uapi/linux/netfilter_ipv6/ip6t_rt.h: include linux/in6.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (59 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 60/98] include/uapi/linux/netfilter/xt_osf.h: include linux/ip.h and linux/tcp.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 62/98] include/uapi/linux/netfilter_bridge/ebt_ip6.h: " Mikko Rapeli
                   ` (37 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compiler error:

error: array type has incomplete element type
  struct in6_addr addrs[IP6T_RT_HOPS]; /* Hops */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter_ipv6/ip6t_rt.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/netfilter_ipv6/ip6t_rt.h b/include/uapi/linux/netfilter_ipv6/ip6t_rt.h
index 7605a5f..558f81e 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6t_rt.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6t_rt.h
@@ -2,7 +2,7 @@
 #define _IP6T_RT_H
 
 #include <linux/types.h>
-/*#include <linux/in6.h>*/
+#include <linux/in6.h>
 
 #define IP6T_RT_HOPS 16
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 62/98] include/uapi/linux/netfilter_bridge/ebt_ip6.h: include linux/in6.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (60 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 61/98] include/uapi/linux/netfilter_ipv6/ip6t_rt.h: include linux/in6.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 63/98] include/uapi/linux/netfilter/xt_policy.h: include linux/in.h and linux/in6.h Mikko Rapeli
                   ` (36 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compiler errors like

error: field ‘saddr’ has incomplete type
  struct in6_addr saddr;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter_bridge/ebt_ip6.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/netfilter_bridge/ebt_ip6.h b/include/uapi/linux/netfilter_bridge/ebt_ip6.h
index 42b8896..a062f0c 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_ip6.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_ip6.h
@@ -13,6 +13,7 @@
 #define __LINUX_BRIDGE_EBT_IP6_H
 
 #include <linux/types.h>
+#include <linux/in6.h>
 
 #define EBT_IP6_SOURCE 0x01
 #define EBT_IP6_DEST 0x02
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 63/98] include/uapi/linux/netfilter/xt_policy.h: include linux/in.h and linux/in6.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (61 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 62/98] include/uapi/linux/netfilter_bridge/ebt_ip6.h: " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 64/98] include/uapi/linux/netfilter_bridge/ebt_arp.h: include linux/if_ether.h Mikko Rapeli
                   ` (35 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compiler errors:

error: field ‘a4’ has incomplete type
  struct in_addr a4;
error: field ‘a6’ has incomplete type
  struct in6_addr a6;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/xt_policy.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/netfilter/xt_policy.h b/include/uapi/linux/netfilter/xt_policy.h
index be8ead0..d8a9800 100644
--- a/include/uapi/linux/netfilter/xt_policy.h
+++ b/include/uapi/linux/netfilter/xt_policy.h
@@ -2,6 +2,8 @@
 #define _XT_POLICY_H
 
 #include <linux/types.h>
+#include <linux/in.h>
+#include <linux/in6.h>
 
 #define XT_POLICY_MAX_ELEM	4
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 64/98] include/uapi/linux/netfilter_bridge/ebt_arp.h: include linux/if_ether.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (62 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 63/98] include/uapi/linux/netfilter/xt_policy.h: include linux/in.h and linux/in6.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 65/98] include/uapi/linux/netfilter_bridge/ebt_arpreply.h: " Mikko Rapeli
                   ` (34 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compile error:

error: ‘ETH_ALEN’ undeclared here (not in a function)
 unsigned char smaddr[ETH_ALEN];

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter_bridge/ebt_arp.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/netfilter_bridge/ebt_arp.h b/include/uapi/linux/netfilter_bridge/ebt_arp.h
index 522f3e4..dd4df25 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_arp.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_arp.h
@@ -2,6 +2,7 @@
 #define __LINUX_BRIDGE_EBT_ARP_H
 
 #include <linux/types.h>
+#include <linux/if_ether.h>
 
 #define EBT_ARP_OPCODE 0x01
 #define EBT_ARP_HTYPE 0x02
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 65/98] include/uapi/linux/netfilter_bridge/ebt_arpreply.h: include linux/if_ether.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (63 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 64/98] include/uapi/linux/netfilter_bridge/ebt_arp.h: include linux/if_ether.h Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 66/98] include/uapi/linux/netfilter_bridge/ebt_nat.h: " Mikko Rapeli
                   ` (33 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compile error:

error: ‘ETH_ALEN’ undeclared here (not in a function)
 unsigned char mac[ETH_ALEN];

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter_bridge/ebt_arpreply.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/netfilter_bridge/ebt_arpreply.h b/include/uapi/linux/netfilter_bridge/ebt_arpreply.h
index 7e77896..6fee340 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_arpreply.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_arpreply.h
@@ -1,6 +1,8 @@
 #ifndef __LINUX_BRIDGE_EBT_ARPREPLY_H
 #define __LINUX_BRIDGE_EBT_ARPREPLY_H
 
+#include <linux/if_ether.h>
+
 struct ebt_arpreply_info {
 	unsigned char mac[ETH_ALEN];
 	int target;
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 66/98] include/uapi/linux/netfilter_bridge/ebt_nat.h: include linux/if_ether.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (64 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 65/98] include/uapi/linux/netfilter_bridge/ebt_arpreply.h: " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-30 15:38 ` [PATCH 67/98] include/uapi/linux/netfilter/ipset/ip_set_bitmap.h: include linux/netfilter/ipset/ip_set.h Mikko Rapeli
                   ` (32 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compile error:

error: ‘ETH_ALEN’ undeclared here (not in a function)
 unsigned char mac[ETH_ALEN];

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter_bridge/ebt_nat.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/netfilter_bridge/ebt_nat.h b/include/uapi/linux/netfilter_bridge/ebt_nat.h
index 5e74e3b..c990d74 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_nat.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_nat.h
@@ -1,6 +1,8 @@
 #ifndef __LINUX_BRIDGE_EBT_NAT_H
 #define __LINUX_BRIDGE_EBT_NAT_H
 
+#include <linux/if_ether.h>
+
 #define NAT_ARP_BIT  (0x00000010)
 struct ebt_nat_info {
 	unsigned char mac[ETH_ALEN];
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 67/98] include/uapi/linux/netfilter/ipset/ip_set_bitmap.h: include linux/netfilter/ipset/ip_set.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (65 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 66/98] include/uapi/linux/netfilter_bridge/ebt_nat.h: " Mikko Rapeli
@ 2015-05-30 15:38 ` Mikko Rapeli
  2015-05-31 18:15   ` Jozsef Kadlecsik
  2015-05-30 15:39 ` [PATCH 68/98] include/uapi/linux/netfilter/ipset/ip_set_hash.h: " Mikko Rapeli
                   ` (31 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:38 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compilation error:

error: ‘IPSET_ERR_TYPE_SPECIFIC’ undeclared here (not in a function)
  IPSET_ERR_BITMAP_RANGE = IPSET_ERR_TYPE_SPECIFIC,

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/ipset/ip_set_bitmap.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h b/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h
index 6a2c038..fd5024d 100644
--- a/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h
+++ b/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h
@@ -1,6 +1,8 @@
 #ifndef _UAPI__IP_SET_BITMAP_H
 #define _UAPI__IP_SET_BITMAP_H
 
+#include <linux/netfilter/ipset/ip_set.h>
+
 /* Bitmap type specific error codes */
 enum {
 	/* The element is out of the range of the set */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 68/98] include/uapi/linux/netfilter/ipset/ip_set_hash.h: include linux/netfilter/ipset/ip_set.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (66 preceding siblings ...)
  2015-05-30 15:38 ` [PATCH 67/98] include/uapi/linux/netfilter/ipset/ip_set_bitmap.h: include linux/netfilter/ipset/ip_set.h Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 69/98] include/uapi/linux/netfilter/ipset/ip_set_list.h: " Mikko Rapeli
                   ` (30 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compilation error:

error: ‘IPSET_ERR_TYPE_SPECIFIC’ undeclared here (not in a function)
  IPSET_ERR_HASH_FULL = IPSET_ERR_TYPE_SPECIFIC,

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/ipset/ip_set_hash.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/netfilter/ipset/ip_set_hash.h b/include/uapi/linux/netfilter/ipset/ip_set_hash.h
index 352eecc..82deeb8 100644
--- a/include/uapi/linux/netfilter/ipset/ip_set_hash.h
+++ b/include/uapi/linux/netfilter/ipset/ip_set_hash.h
@@ -1,6 +1,8 @@
 #ifndef _UAPI__IP_SET_HASH_H
 #define _UAPI__IP_SET_HASH_H
 
+#include <linux/netfilter/ipset/ip_set.h>
+
 /* Hash type specific error codes */
 enum {
 	/* Hash is full */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 69/98] include/uapi/linux/netfilter/ipset/ip_set_list.h: include linux/netfilter/ipset/ip_set.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (67 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 68/98] include/uapi/linux/netfilter/ipset/ip_set_hash.h: " Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 70/98] include/uapi/linux/netfilter/xt_HMARK.h: include linux/netfilter.h Mikko Rapeli
                   ` (29 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compilation error:

error: ‘IPSET_ERR_TYPE_SPECIFIC’ undeclared here (not in a function)
  IPSET_ERR_NAME = IPSET_ERR_TYPE_SPECIFIC,

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/ipset/ip_set_list.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/netfilter/ipset/ip_set_list.h b/include/uapi/linux/netfilter/ipset/ip_set_list.h
index a44efaa..84d4303 100644
--- a/include/uapi/linux/netfilter/ipset/ip_set_list.h
+++ b/include/uapi/linux/netfilter/ipset/ip_set_list.h
@@ -1,6 +1,8 @@
 #ifndef _UAPI__IP_SET_LIST_H
 #define _UAPI__IP_SET_LIST_H
 
+#include <linux/netfilter/ipset/ip_set.h>
+
 /* List type specific error codes */
 enum {
 	/* Set name to be added/deleted/tested does not exist. */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 70/98] include/uapi/linux/netfilter/xt_HMARK.h: include linux/netfilter.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (68 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 69/98] include/uapi/linux/netfilter/ipset/ip_set_list.h: " Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 71/98] include/uapi/linux/netfilter/xt_TEE.h: " Mikko Rapeli
                   ` (28 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compilation errors:

error: field ‘src_mask’ has incomplete type
  union nf_inet_addr src_mask;
error: field ‘dst_mask’ has incomplete type
  union nf_inet_addr dst_mask;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/xt_HMARK.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/netfilter/xt_HMARK.h b/include/uapi/linux/netfilter/xt_HMARK.h
index 826fc58..3fb48c8 100644
--- a/include/uapi/linux/netfilter/xt_HMARK.h
+++ b/include/uapi/linux/netfilter/xt_HMARK.h
@@ -2,6 +2,7 @@
 #define XT_HMARK_H_
 
 #include <linux/types.h>
+#include <linux/netfilter.h>
 
 enum {
 	XT_HMARK_SADDR_MASK,
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 71/98] include/uapi/linux/netfilter/xt_TEE.h: include linux/netfilter.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (69 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 70/98] include/uapi/linux/netfilter/xt_HMARK.h: include linux/netfilter.h Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 72/98] include/uapi/linux/netfilter/xt_TPROXY.h: " Mikko Rapeli
                   ` (27 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compilation error:

error: field ‘gw’ has incomplete type
  union nf_inet_addr gw;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/xt_TEE.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/netfilter/xt_TEE.h b/include/uapi/linux/netfilter/xt_TEE.h
index 5c21d5c..0109202 100644
--- a/include/uapi/linux/netfilter/xt_TEE.h
+++ b/include/uapi/linux/netfilter/xt_TEE.h
@@ -1,6 +1,8 @@
 #ifndef _XT_TEE_TARGET_H
 #define _XT_TEE_TARGET_H
 
+#include <linux/netfilter.h>
+
 struct xt_tee_tginfo {
 	union nf_inet_addr gw;
 	char oif[16];
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 72/98] include/uapi/linux/netfilter/xt_TPROXY.h: include linux/netfilter.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (70 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 71/98] include/uapi/linux/netfilter/xt_TEE.h: " Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 73/98] include/uapi/linux/netfilter/xt_ipvs.h: " Mikko Rapeli
                   ` (26 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compilation error:

error: field ‘laddr’ has incomplete type
  union nf_inet_addr laddr;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/xt_TPROXY.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/netfilter/xt_TPROXY.h b/include/uapi/linux/netfilter/xt_TPROXY.h
index 902043c..8d693ee 100644
--- a/include/uapi/linux/netfilter/xt_TPROXY.h
+++ b/include/uapi/linux/netfilter/xt_TPROXY.h
@@ -2,6 +2,7 @@
 #define _XT_TPROXY_H
 
 #include <linux/types.h>
+#include <linux/netfilter.h>
 
 /* TPROXY target is capable of marking the packet to perform
  * redirection. We can get rid of that whenever we get support for
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 73/98] include/uapi/linux/netfilter/xt_ipvs.h: include linux/netfilter.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (71 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 72/98] include/uapi/linux/netfilter/xt_TPROXY.h: " Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 74/98] include/uapi/linux/netfilter/xt_mac.h: include linux/if_ether.h Mikko Rapeli
                   ` (25 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compilation errors:

error: field ‘vaddr’ has incomplete type
  union nf_inet_addr vaddr, vmask;
error: field ‘vmask’ has incomplete type
  union nf_inet_addr vaddr, vmask;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/xt_ipvs.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/netfilter/xt_ipvs.h b/include/uapi/linux/netfilter/xt_ipvs.h
index eff34ac..e03b9c3 100644
--- a/include/uapi/linux/netfilter/xt_ipvs.h
+++ b/include/uapi/linux/netfilter/xt_ipvs.h
@@ -2,6 +2,7 @@
 #define _XT_IPVS_H
 
 #include <linux/types.h>
+#include <linux/netfilter.h>
 
 enum {
 	XT_IPVS_IPVS_PROPERTY =	1 << 0, /* all other options imply this one */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 74/98] include/uapi/linux/netfilter/xt_mac.h: include linux/if_ether.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (72 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 73/98] include/uapi/linux/netfilter/xt_ipvs.h: " Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 75/98] include/uapi/linux/netfilter/xt_sctp.h: use _Bool type, 1 for true and 0 for false Mikko Rapeli
                   ` (24 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compilation error:

error: ‘ETH_ALEN’ undeclared here (not in a function)
     unsigned char srcaddr[ETH_ALEN];

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/xt_mac.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/netfilter/xt_mac.h b/include/uapi/linux/netfilter/xt_mac.h
index b892cdc..9a19a08 100644
--- a/include/uapi/linux/netfilter/xt_mac.h
+++ b/include/uapi/linux/netfilter/xt_mac.h
@@ -1,6 +1,8 @@
 #ifndef _XT_MAC_H
 #define _XT_MAC_H
 
+#include <linux/if_ether.h>
+
 struct xt_mac_info {
     unsigned char srcaddr[ETH_ALEN];
     int invert;
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 75/98] include/uapi/linux/netfilter/xt_sctp.h: use _Bool type, 1 for true and 0 for false
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (73 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 74/98] include/uapi/linux/netfilter/xt_mac.h: include linux/if_ether.h Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 76/98] include/uapi/linux/netfilter/xt_recent.h: include linux/netfilter.h Mikko Rapeli
                   ` (23 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compilation errors like:

error: unknown type name ‘bool’
 static __inline__ bool
error: ‘false’ undeclared (first use in this function)
    return false;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/xt_sctp.h | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/include/uapi/linux/netfilter/xt_sctp.h b/include/uapi/linux/netfilter/xt_sctp.h
index 29287be..58ffcfb 100644
--- a/include/uapi/linux/netfilter/xt_sctp.h
+++ b/include/uapi/linux/netfilter/xt_sctp.h
@@ -66,26 +66,26 @@ struct xt_sctp_info {
 
 #define SCTP_CHUNKMAP_IS_CLEAR(chunkmap) \
 	__sctp_chunkmap_is_clear((chunkmap), ARRAY_SIZE(chunkmap))
-static inline bool
+static inline _Bool
 __sctp_chunkmap_is_clear(const __u32 *chunkmap, unsigned int n)
 {
 	unsigned int i;
 	for (i = 0; i < n; ++i)
 		if (chunkmap[i])
-			return false;
-	return true;
+			return 0;
+	return 1;
 }
 
 #define SCTP_CHUNKMAP_IS_ALL_SET(chunkmap) \
 	__sctp_chunkmap_is_all_set((chunkmap), ARRAY_SIZE(chunkmap))
-static inline bool
+static inline _Bool
 __sctp_chunkmap_is_all_set(const __u32 *chunkmap, unsigned int n)
 {
 	unsigned int i;
 	for (i = 0; i < n; ++i)
 		if (chunkmap[i] != ~0U)
-			return false;
-	return true;
+			return 0;
+	return 1;
 }
 
 #endif /* _XT_SCTP_H_ */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 76/98] include/uapi/linux/netfilter/xt_recent.h: include linux/netfilter.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (74 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 75/98] include/uapi/linux/netfilter/xt_sctp.h: use _Bool type, 1 for true and 0 for false Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 77/98] include/uapi/linux/errqueue.h: include linux/time.h Mikko Rapeli
                   ` (22 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Fixes userspace compilation error:

error: field ‘mask’ has incomplete type
  union nf_inet_addr mask;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/xt_recent.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/netfilter/xt_recent.h b/include/uapi/linux/netfilter/xt_recent.h
index 6ef36c1..955d562 100644
--- a/include/uapi/linux/netfilter/xt_recent.h
+++ b/include/uapi/linux/netfilter/xt_recent.h
@@ -2,6 +2,7 @@
 #define _LINUX_NETFILTER_XT_RECENT_H 1
 
 #include <linux/types.h>
+#include <linux/netfilter.h>
 
 enum {
 	XT_RECENT_CHECK    = 1 << 0,
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 77/98] include/uapi/linux/errqueue.h: include linux/time.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (75 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 76/98] include/uapi/linux/netfilter/xt_recent.h: include linux/netfilter.h Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 78/98] include/uapi/asm-generic/ucontext.h: include asm/signal.h and asm/sigcontext.h Mikko Rapeli
                   ` (21 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David S. Miller, Willem de Bruijn, linux-api

Fixes userspace compilation error:

error: array type has incomplete element type
 struct timespec ts[3];

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/errqueue.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/errqueue.h b/include/uapi/linux/errqueue.h
index 07bdce1..6b1cdc6 100644
--- a/include/uapi/linux/errqueue.h
+++ b/include/uapi/linux/errqueue.h
@@ -2,6 +2,7 @@
 #define _UAPI_LINUX_ERRQUEUE_H
 
 #include <linux/types.h>
+#include <linux/time.h>
 
 struct sock_extended_err {
 	__u32	ee_errno;	
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 78/98] include/uapi/asm-generic/ucontext.h: include asm/signal.h and asm/sigcontext.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (76 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 77/98] include/uapi/linux/errqueue.h: include linux/time.h Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 79/98] arch/x86/include/uapi/asm/signal.h: use __kernel_size_t instead of size_t Mikko Rapeli
                   ` (20 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Arnd Bergmann, linux-arch, linux-api

Fixes userspace compiler errors:

error: unknown type name ‘stack_t’
error: field ‘uc_mcontext’ has incomplete type
struct sigcontext uc_mcontext;
error: unknown type name ‘sigset_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/asm-generic/ucontext.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/uapi/asm-generic/ucontext.h b/include/uapi/asm-generic/ucontext.h
index ad77343..4481528 100644
--- a/include/uapi/asm-generic/ucontext.h
+++ b/include/uapi/asm-generic/ucontext.h
@@ -1,6 +1,9 @@
 #ifndef __ASM_GENERIC_UCONTEXT_H
 #define __ASM_GENERIC_UCONTEXT_H
 
+#include <asm/signal.h>
+#include <asm/sigcontext.h>
+
 struct ucontext {
 	unsigned long	  uc_flags;
 	struct ucontext  *uc_link;
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 79/98] arch/x86/include/uapi/asm/signal.h: use __kernel_size_t instead of size_t
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (77 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 78/98] include/uapi/asm-generic/ucontext.h: include asm/signal.h and asm/sigcontext.h Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 80/98] include/uapi/linux/auto_fs.h: include linux/limits.h Mikko Rapeli
                   ` (19 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86

Fixes userspace compilation error:

error: unknown type name ‘size_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 arch/x86/include/uapi/asm/signal.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/include/uapi/asm/signal.h b/arch/x86/include/uapi/asm/signal.h
index 8264f47..74346db 100644
--- a/arch/x86/include/uapi/asm/signal.h
+++ b/arch/x86/include/uapi/asm/signal.h
@@ -127,7 +127,7 @@ struct sigaction {
 typedef struct sigaltstack {
 	void __user *ss_sp;
 	int ss_flags;
-	size_t ss_size;
+	__kernel_size_t ss_size;
 } stack_t;
 
 #endif /* __ASSEMBLY__ */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 80/98] include/uapi/linux/auto_fs.h: include linux/limits.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (78 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 79/98] arch/x86/include/uapi/asm/signal.h: use __kernel_size_t instead of size_t Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 81/98] include/uapi/linux/openvswitch.h: use __u32 from linux/types.h Mikko Rapeli
                   ` (18 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compilation error:

error: ‘NAME_MAX’ undeclared here (not in a function)

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/auto_fs.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/auto_fs.h b/include/uapi/linux/auto_fs.h
index bb991df..edffdd5 100644
--- a/include/uapi/linux/auto_fs.h
+++ b/include/uapi/linux/auto_fs.h
@@ -15,6 +15,7 @@
 #define _UAPI_LINUX_AUTO_FS_H
 
 #include <linux/types.h>
+#include <linux/limits.h>
 #ifndef __KERNEL__
 #include <sys/ioctl.h>
 #endif /* __KERNEL__ */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 81/98] include/uapi/linux/openvswitch.h: use __u32 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (79 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 80/98] include/uapi/linux/auto_fs.h: include linux/limits.h Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 82/98] include/uapi/linux/target_core_user.h: use __u8, __u16, __u32 and __u64 " Mikko Rapeli
                   ` (17 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Pravin Shelar, netdev, dev, linux-api

Fixes userspace compiler error:

error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/openvswitch.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/openvswitch.h b/include/uapi/linux/openvswitch.h
index bbd49a0..0ab8eca 100644
--- a/include/uapi/linux/openvswitch.h
+++ b/include/uapi/linux/openvswitch.h
@@ -586,8 +586,8 @@ enum ovs_hash_alg {
  * @hash_basis: basis used for computing hash.
  */
 struct ovs_action_hash {
-	uint32_t  hash_alg;     /* One of ovs_hash_alg. */
-	uint32_t  hash_basis;
+	__u32  hash_alg;     /* One of ovs_hash_alg. */
+	__u32  hash_basis;
 };
 
 /**
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 82/98] include/uapi/linux/target_core_user.h: use __u8, __u16, __u32 and __u64 from linux/types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (80 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 81/98] include/uapi/linux/openvswitch.h: use __u32 from linux/types.h Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 83/98] include/uapi/linux/omapfb.h: use __kernel_size_t instead of size_t Mikko Rapeli
                   ` (16 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Nicholas Bellinger, Andy Grover, Kyle McMartin,
	Ilias Tsitsimpis, linux-api

Fixes userspace compilation errors like:

error: unknown type name ‘uint16_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/target_core_user.h | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/include/uapi/linux/target_core_user.h b/include/uapi/linux/target_core_user.h
index b67f99d..012e013 100644
--- a/include/uapi/linux/target_core_user.h
+++ b/include/uapi/linux/target_core_user.h
@@ -108,26 +108,26 @@ struct tcmu_cmd_entry {
 
 	union {
 		struct {
-			uint32_t iov_cnt;
-			uint32_t iov_bidi_cnt;
-			uint32_t iov_dif_cnt;
-			uint64_t cdb_off;
-			uint64_t __pad1;
-			uint64_t __pad2;
+			__u32 iov_cnt;
+			__u32 iov_bidi_cnt;
+			__u32 iov_dif_cnt;
+			__u64 cdb_off;
+			__u64 __pad1;
+			__u64 __pad2;
 			struct iovec iov[0];
 		} req;
 		struct {
-			uint8_t scsi_status;
-			uint8_t __pad1;
-			uint16_t __pad2;
-			uint32_t __pad3;
+			__u8 scsi_status;
+			__u8 __pad1;
+			__u16 __pad2;
+			__u32 __pad3;
 			char sense_buffer[TCMU_SENSE_BUFFERSIZE];
 		} rsp;
 	};
 
 } __packed;
 
-#define TCMU_OP_ALIGN_SIZE sizeof(uint64_t)
+#define TCMU_OP_ALIGN_SIZE sizeof(__u64)
 
 enum tcmu_genl_cmd {
 	TCMU_CMD_UNSPEC,
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 83/98] include/uapi/linux/omapfb.h: use __kernel_size_t instead of size_t
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (81 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 82/98] include/uapi/linux/target_core_user.h: use __u8, __u16, __u32 and __u64 " Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 84/98] include/uapi/linux/atm_zatm.h: include linux/time.h Mikko Rapeli
                   ` (15 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compilation error:

error: unknown type name ‘size_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/omapfb.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/omapfb.h b/include/uapi/linux/omapfb.h
index 7c97bc0..b637a92 100644
--- a/include/uapi/linux/omapfb.h
+++ b/include/uapi/linux/omapfb.h
@@ -181,7 +181,7 @@ struct omapfb_memory_read {
 	__u16 y;
 	__u16 w;
 	__u16 h;
-	size_t buffer_size;
+	__kernel_size_t buffer_size;
 	void __user *buffer;
 };
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 84/98] include/uapi/linux/atm_zatm.h: include linux/time.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (82 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 83/98] include/uapi/linux/omapfb.h: use __kernel_size_t instead of size_t Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 85/98] include/uapi/linux/scc.h: include linux/sockios.h Mikko Rapeli
                   ` (14 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Chas Williams, linux-atm-general, netdev, linux-api

Fixes userspace compile error:

error: field ‘real’ has incomplete type
 struct timeval real;  /* real (wall-clock) time */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/atm_zatm.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/atm_zatm.h b/include/uapi/linux/atm_zatm.h
index 10f0fa2..adbaa6c 100644
--- a/include/uapi/linux/atm_zatm.h
+++ b/include/uapi/linux/atm_zatm.h
@@ -14,6 +14,7 @@
 
 #include <linux/atmapi.h>
 #include <linux/atmioc.h>
+#include <linux/time.h>
 
 #define ZATM_GETPOOL	_IOW('a',ATMIOC_SARPRV+1,struct atmif_sioc)
 						/* get pool statistics */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 85/98] include/uapi/linux/scc.h: include linux/sockios.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (83 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 84/98] include/uapi/linux/atm_zatm.h: include linux/time.h Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 86/98] include/uapi/linux/btrfs.h: define NULL Mikko Rapeli
                   ` (13 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compilation error:

error: ‘SIOCDEVPRIVATE’ undeclared here (not in a function)
  SIOCSCCRESERVED = SIOCDEVPRIVATE

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/scc.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/scc.h b/include/uapi/linux/scc.h
index 72b6b81..2992b88 100644
--- a/include/uapi/linux/scc.h
+++ b/include/uapi/linux/scc.h
@@ -3,6 +3,7 @@
 #ifndef _UAPI_SCC_H
 #define _UAPI_SCC_H
 
+#include <linux/sockios.h>
 
 /* selection of hardware types */
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 86/98] include/uapi/linux/btrfs.h: define NULL
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (84 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 85/98] include/uapi/linux/scc.h: include linux/sockios.h Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 87/98] include/uapi/linux/kexec.h: use __kernel_size_t instead of size_t Mikko Rapeli
                   ` (12 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Chris Mason, David Sterba, Anand Jain,
	Takeuchi Satoru, Eryu Guan, Gerhard Heift, linux-api

Copied the NULL definition from include/linux/stddef.h which does not have
it in userspace.

Fixes userspace compilation error:

error: ‘NULL’ undeclared (first use in this function)
    return NULL;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/btrfs.h | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/include/uapi/linux/btrfs.h b/include/uapi/linux/btrfs.h
index b6dec05..a8ae69b 100644
--- a/include/uapi/linux/btrfs.h
+++ b/include/uapi/linux/btrfs.h
@@ -20,6 +20,12 @@
 #define _UAPI_LINUX_BTRFS_H
 #include <linux/types.h>
 #include <linux/ioctl.h>
+#include <linux/stddef.h>
+
+/* for userspace where linux/stddef.h doesn't define this */
+#ifndef NULL
+#define NULL ((void *)0)
+#endif
 
 #define BTRFS_IOCTL_MAGIC 0x94
 #define BTRFS_VOL_NAME_MAX 255
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 87/98] include/uapi/linux/kexec.h: use __kernel_size_t instead of size_t
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (85 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 86/98] include/uapi/linux/btrfs.h: define NULL Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 88/98] include/uapi/linux/reiserfs_xattr.h: " Mikko Rapeli
                   ` (11 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Eric Biederman, kexec, linux-api

Fixes userspace compilation error:

error: unknown type name ‘size_t’
  size_t bufsz;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/kexec.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/kexec.h b/include/uapi/linux/kexec.h
index 99048e5..26be201 100644
--- a/include/uapi/linux/kexec.h
+++ b/include/uapi/linux/kexec.h
@@ -50,9 +50,9 @@
  */
 struct kexec_segment {
 	const void *buf;
-	size_t bufsz;
+	__kernel_size_t bufsz;
 	const void *mem;
-	size_t memsz;
+	__kernel_size_t memsz;
 };
 
 #endif /* __KERNEL__ */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 88/98] include/uapi/linux/reiserfs_xattr.h: use __kernel_size_t instead of size_t
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (86 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 87/98] include/uapi/linux/kexec.h: use __kernel_size_t instead of size_t Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 89/98] include/uapi/linux/patchkey.h: change #error to #warning if file included directly Mikko Rapeli
                   ` (10 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Fixes userspace compilation error:

error: unknown type name ‘size_t’
  size_t length;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/reiserfs_xattr.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/reiserfs_xattr.h b/include/uapi/linux/reiserfs_xattr.h
index 38fdd64..af52b38 100644
--- a/include/uapi/linux/reiserfs_xattr.h
+++ b/include/uapi/linux/reiserfs_xattr.h
@@ -18,7 +18,7 @@ struct reiserfs_xattr_header {
 struct reiserfs_security_handle {
 	const char *name;
 	void *value;
-	size_t length;
+	__kernel_size_t length;
 };
 
 #endif  /*  _LINUX_REISERFS_XATTR_H  */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 89/98] include/uapi/linux/patchkey.h: change #error to #warning if file included directly
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (87 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 88/98] include/uapi/linux/reiserfs_xattr.h: " Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 90/98] include/uapi/linux/coda.h: use __kernel_pid_t and add u_short etc definitions for userspace Mikko Rapeli
                   ` (9 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

Would be nice to be able to compile all userspace header files also alone.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/patchkey.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/patchkey.h b/include/uapi/linux/patchkey.h
index 1bda0e5..cee195d 100644
--- a/include/uapi/linux/patchkey.h
+++ b/include/uapi/linux/patchkey.h
@@ -11,7 +11,7 @@
  */
 
 #ifndef _LINUX_PATCHKEY_H_INDIRECT
-#error "patchkey.h included directly"
+#warning "patchkey.h included directly"
 #endif
 
 #ifndef _UAPI_LINUX_PATCHKEY_H
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 90/98] include/uapi/linux/coda.h: use __kernel_pid_t and add u_short etc definitions for userspace
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (88 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 89/98] include/uapi/linux/patchkey.h: change #error to #warning if file included directly Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 91/98] include/uapi/linux/android/binder.h: use __kernel_pid_t and __kernel_uid_t Mikko Rapeli
                   ` (8 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Jan Harkes, coda, codalist, linux-api

Fixes userspace compilation errors about unknown pid_t, u_short etc types.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/coda.h | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/coda.h b/include/uapi/linux/coda.h
index 695fade..591bb42 100644
--- a/include/uapi/linux/coda.h
+++ b/include/uapi/linux/coda.h
@@ -100,7 +100,14 @@ typedef unsigned long long u_quad_t;
 #if defined(__linux__)
 #include <linux/time.h>
 #define cdev_t u_quad_t
+typedef unsigned long u_long;
+typedef unsigned int u_int;
+typedef unsigned short u_short;
+typedef u_long ino_t;
+
 #ifndef __KERNEL__
+typedef u_long dev_t;
+typedef void * caddr_t;
 #if !defined(_UQUAD_T_) && (!defined(__GLIBC__) || __GLIBC__ < 2)
 #define _UQUAD_T_ 1
 typedef unsigned long long u_quad_t;
@@ -295,8 +302,8 @@ struct coda_statfs {
 struct coda_in_hdr {
     u_int32_t opcode;
     u_int32_t unique;	    /* Keep multiple outstanding msgs distinct */
-    pid_t pid;
-    pid_t pgid;
+    __kernel_pid_t pid;
+    __kernel_pid_t pgid;
     vuid_t uid;
 };
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 91/98] include/uapi/linux/android/binder.h: use __kernel_pid_t and __kernel_uid_t
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (89 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 90/98] include/uapi/linux/coda.h: use __kernel_pid_t and add u_short etc definitions for userspace Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 92/98] arch/x86/include/uapi/asm/sembuf.h: include linux/types.h and linux/ipc.h Mikko Rapeli
                   ` (7 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Greg Kroah-Hartman, Purnendu Kapadia, linux-api

Fixes userspace compilation errors:

error: unknown type name ‘pid_t’
  pid_t  sender_pid
error: unknown type name ‘uid_t’
  uid_t  sender_euid;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/android/binder.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/android/binder.h b/include/uapi/linux/android/binder.h
index 41420e3..4e4a385 100644
--- a/include/uapi/linux/android/binder.h
+++ b/include/uapi/linux/android/binder.h
@@ -142,8 +142,8 @@ struct binder_transaction_data {
 
 	/* General information about the transaction. */
 	__u32	        flags;
-	pid_t		sender_pid;
-	uid_t		sender_euid;
+	__kernel_pid_t		sender_pid;
+	__kernel_uid_t		sender_euid;
 	binder_size_t	data_size;	/* number of bytes of data */
 	binder_size_t	offsets_size;	/* number of bytes of offsets */
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 92/98] arch/x86/include/uapi/asm/sembuf.h: include linux/types.h and linux/ipc.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (90 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 91/98] include/uapi/linux/android/binder.h: use __kernel_pid_t and __kernel_uid_t Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 93/98] include/uapi/linux/virtio_balloon.h: include linux/virtio_types.h Mikko Rapeli
                   ` (6 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86

Fixes userspace compile errors like:

error: field ‘sem_perm’ has incomplete type
  struct ipc64_perm sem_perm; /* permissions .. see ipc.h */
error: unknown type name ‘__kernel_time_t’
  __kernel_time_t sem_otime; /* last semop time */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 arch/x86/include/uapi/asm/sembuf.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/x86/include/uapi/asm/sembuf.h b/arch/x86/include/uapi/asm/sembuf.h
index cc2d6a3..f11ed52 100644
--- a/arch/x86/include/uapi/asm/sembuf.h
+++ b/arch/x86/include/uapi/asm/sembuf.h
@@ -1,6 +1,9 @@
 #ifndef _ASM_X86_SEMBUF_H
 #define _ASM_X86_SEMBUF_H
 
+#include <linux/types.h>
+#include <linux/ipc.h>
+
 /*
  * The semid64_ds structure for x86 architecture.
  * Note extra padding because this structure is passed back and forth
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 93/98] include/uapi/linux/virtio_balloon.h: include linux/virtio_types.h
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (91 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 92/98] arch/x86/include/uapi/asm/sembuf.h: include linux/types.h and linux/ipc.h Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 94/98] HACK arch/x86/include/uapi/asm/sigcontext32.h: remove _fpx_sw_bytes from union Mikko Rapeli
                   ` (5 subsequent siblings)
  98 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Michael S. Tsirkin, virtualization, linux-api

Fixes userspace compilation error:

error: unknown type name ‘__virtio16’
  __virtio16 tag;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/virtio_balloon.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/virtio_balloon.h b/include/uapi/linux/virtio_balloon.h
index 984169a..d7f1cbc 100644
--- a/include/uapi/linux/virtio_balloon.h
+++ b/include/uapi/linux/virtio_balloon.h
@@ -26,6 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE. */
 #include <linux/types.h>
+#include <linux/virtio_types.h>
 #include <linux/virtio_ids.h>
 #include <linux/virtio_config.h>
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 94/98] HACK arch/x86/include/uapi/asm/sigcontext32.h: remove _fpx_sw_bytes from union
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (92 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 93/98] include/uapi/linux/virtio_balloon.h: include linux/virtio_types.h Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-09-02 19:34   ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 95/98] HACK: fix include/uapi/xen/privcmd.h compilation in userspace Mikko Rapeli
                   ` (4 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86

I have no idea what I'm doing but this fixes header file compilation in
userspace:

error: field ‘sw_reserved’ has incomplete type
   struct _fpx_sw_bytes sw_reserved;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 arch/x86/include/uapi/asm/sigcontext32.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/arch/x86/include/uapi/asm/sigcontext32.h b/arch/x86/include/uapi/asm/sigcontext32.h
index ad1478c..ceaaa78 100644
--- a/arch/x86/include/uapi/asm/sigcontext32.h
+++ b/arch/x86/include/uapi/asm/sigcontext32.h
@@ -45,7 +45,6 @@ struct _fpstate_ia32 {
 	__u32	padding[44];
 	union {
 		__u32 padding2[12];
-		struct _fpx_sw_bytes sw_reserved;
 	};
 };
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 95/98] HACK: fix include/uapi/xen/privcmd.h compilation in userspace
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (93 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 94/98] HACK arch/x86/include/uapi/asm/sigcontext32.h: remove _fpx_sw_bytes from union Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-30 17:56   ` [Xen-devel] " Andrew Cooper
  2015-05-30 15:39 ` [PATCH 96/98] HACK include/uapi/linux/coda_psdev.h: fix " Mikko Rapeli
                   ` (3 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mikko Rapeli, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86,
	Konrad Rzeszutek Wilk, Boris Ostrovsky, David Vrabel,
	Cornelia Huck, Arnaldo Carvalho de Melo, Christian Borntraeger,
	Alexander Yarygin, Juergen Gross, xen-devel, linux-api

privcmd.h depends on xen/interface/xen.h which is now exported to userspace.
xen/interface/xen.h then depends on asm/xen/interface.h which is now
exported to userspace together with its dependencies asm/xen/interface_32.h,
asm/xen/interface_64.h and asm/pvclock-abi.h on x86 architecture.

Then all of these headers were fixed to use __u8 etc from linux/types.h
instead of custom types.

Then define uint64_t and uint32_t if needed.

After all these changes these header files now compile in userspace too
on x86.

HACK since I have no idea if this is correct way to fix this.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 arch/x86/include/asm/pvclock-abi.h           |  41 +-
 arch/x86/include/asm/xen/interface.h         | 185 +------
 arch/x86/include/asm/xen/interface_32.h      |  98 +---
 arch/x86/include/asm/xen/interface_64.h      | 144 +----
 arch/x86/include/uapi/asm/Kbuild             |   2 +
 arch/x86/include/uapi/asm/pvclock-abi.h      |  47 ++
 arch/x86/include/uapi/asm/xen/Kbuild         |   5 +
 arch/x86/include/uapi/asm/xen/interface.h    | 198 +++++++
 arch/x86/include/uapi/asm/xen/interface_32.h | 103 ++++
 arch/x86/include/uapi/asm/xen/interface_64.h | 150 ++++++
 include/uapi/xen/Kbuild                      |   1 +
 include/uapi/xen/interface/Kbuild            |   2 +
 include/uapi/xen/interface/xen.h             | 759 +++++++++++++++++++++++++++
 include/xen/interface/xen.h                  | 754 +-------------------------
 14 files changed, 1272 insertions(+), 1217 deletions(-)
 create mode 100644 arch/x86/include/uapi/asm/pvclock-abi.h
 create mode 100644 arch/x86/include/uapi/asm/xen/Kbuild
 create mode 100644 arch/x86/include/uapi/asm/xen/interface.h
 create mode 100644 arch/x86/include/uapi/asm/xen/interface_32.h
 create mode 100644 arch/x86/include/uapi/asm/xen/interface_64.h
 create mode 100644 include/uapi/xen/interface/Kbuild
 create mode 100644 include/uapi/xen/interface/xen.h

diff --git a/arch/x86/include/asm/pvclock-abi.h b/arch/x86/include/asm/pvclock-abi.h
index 6167fd7..20df65d 100644
--- a/arch/x86/include/asm/pvclock-abi.h
+++ b/arch/x86/include/asm/pvclock-abi.h
@@ -1,45 +1,6 @@
 #ifndef _ASM_X86_PVCLOCK_ABI_H
 #define _ASM_X86_PVCLOCK_ABI_H
-#ifndef __ASSEMBLY__
 
-/*
- * These structs MUST NOT be changed.
- * They are the ABI between hypervisor and guest OS.
- * Both Xen and KVM are using this.
- *
- * pvclock_vcpu_time_info holds the system time and the tsc timestamp
- * of the last update. So the guest can use the tsc delta to get a
- * more precise system time.  There is one per virtual cpu.
- *
- * pvclock_wall_clock references the point in time when the system
- * time was zero (usually boot time), thus the guest calculates the
- * current wall clock by adding the system time.
- *
- * Protocol for the "version" fields is: hypervisor raises it (making
- * it uneven) before it starts updating the fields and raises it again
- * (making it even) when it is done.  Thus the guest can make sure the
- * time values it got are consistent by checking the version before
- * and after reading them.
- */
+#include <uapi/asm/pvclock-abi.h>
 
-struct pvclock_vcpu_time_info {
-	u32   version;
-	u32   pad0;
-	u64   tsc_timestamp;
-	u64   system_time;
-	u32   tsc_to_system_mul;
-	s8    tsc_shift;
-	u8    flags;
-	u8    pad[2];
-} __attribute__((__packed__)); /* 32 bytes */
-
-struct pvclock_wall_clock {
-	u32   version;
-	u32   sec;
-	u32   nsec;
-} __attribute__((__packed__));
-
-#define PVCLOCK_TSC_STABLE_BIT	(1 << 0)
-#define PVCLOCK_GUEST_STOPPED	(1 << 1)
-#endif /* __ASSEMBLY__ */
 #endif /* _ASM_X86_PVCLOCK_ABI_H */
diff --git a/arch/x86/include/asm/xen/interface.h b/arch/x86/include/asm/xen/interface.h
index 3400dba..a866bdf 100644
--- a/arch/x86/include/asm/xen/interface.h
+++ b/arch/x86/include/asm/xen/interface.h
@@ -1,189 +1,6 @@
-/******************************************************************************
- * arch-x86_32.h
- *
- * Guest OS interface to x86 Xen.
- *
- * Copyright (c) 2004, K A Fraser
- */
-
 #ifndef _ASM_X86_XEN_INTERFACE_H
 #define _ASM_X86_XEN_INTERFACE_H
 
-#ifdef __XEN__
-#define __DEFINE_GUEST_HANDLE(name, type) \
-    typedef struct { type *p; } __guest_handle_ ## name
-#else
-#define __DEFINE_GUEST_HANDLE(name, type) \
-    typedef type * __guest_handle_ ## name
-#endif
-
-#define DEFINE_GUEST_HANDLE_STRUCT(name) \
-	__DEFINE_GUEST_HANDLE(name, struct name)
-#define DEFINE_GUEST_HANDLE(name) __DEFINE_GUEST_HANDLE(name, name)
-#define GUEST_HANDLE(name)        __guest_handle_ ## name
-
-#ifdef __XEN__
-#if defined(__i386__)
-#define set_xen_guest_handle(hnd, val)			\
-	do {						\
-		if (sizeof(hnd) == 8)			\
-			*(uint64_t *)&(hnd) = 0;	\
-		(hnd).p = val;				\
-	} while (0)
-#elif defined(__x86_64__)
-#define set_xen_guest_handle(hnd, val)	do { (hnd).p = val; } while (0)
-#endif
-#else
-#if defined(__i386__)
-#define set_xen_guest_handle(hnd, val)			\
-	do {						\
-		if (sizeof(hnd) == 8)			\
-			*(uint64_t *)&(hnd) = 0;	\
-		(hnd) = val;				\
-	} while (0)
-#elif defined(__x86_64__)
-#define set_xen_guest_handle(hnd, val)	do { (hnd) = val; } while (0)
-#endif
-#endif
-
-#ifndef __ASSEMBLY__
-/* Explicitly size integers that represent pfns in the public interface
- * with Xen so that on ARM we can have one ABI that works for 32 and 64
- * bit guests. */
-typedef unsigned long xen_pfn_t;
-#define PRI_xen_pfn "lx"
-typedef unsigned long xen_ulong_t;
-#define PRI_xen_ulong "lx"
-typedef long xen_long_t;
-#define PRI_xen_long "lx"
-
-/* Guest handles for primitive C types. */
-__DEFINE_GUEST_HANDLE(uchar, unsigned char);
-__DEFINE_GUEST_HANDLE(uint,  unsigned int);
-DEFINE_GUEST_HANDLE(char);
-DEFINE_GUEST_HANDLE(int);
-DEFINE_GUEST_HANDLE(void);
-DEFINE_GUEST_HANDLE(uint64_t);
-DEFINE_GUEST_HANDLE(uint32_t);
-DEFINE_GUEST_HANDLE(xen_pfn_t);
-DEFINE_GUEST_HANDLE(xen_ulong_t);
-#endif
-
-#ifndef HYPERVISOR_VIRT_START
-#define HYPERVISOR_VIRT_START mk_unsigned_long(__HYPERVISOR_VIRT_START)
-#endif
-
-#define MACH2PHYS_VIRT_START  mk_unsigned_long(__MACH2PHYS_VIRT_START)
-#define MACH2PHYS_VIRT_END    mk_unsigned_long(__MACH2PHYS_VIRT_END)
-#define MACH2PHYS_NR_ENTRIES  ((MACH2PHYS_VIRT_END-MACH2PHYS_VIRT_START)>>__MACH2PHYS_SHIFT)
-
-/* Maximum number of virtual CPUs in multi-processor guests. */
-#define MAX_VIRT_CPUS 32
-
-/*
- * SEGMENT DESCRIPTOR TABLES
- */
-/*
- * A number of GDT entries are reserved by Xen. These are not situated at the
- * start of the GDT because some stupid OSes export hard-coded selector values
- * in their ABI. These hard-coded values are always near the start of the GDT,
- * so Xen places itself out of the way, at the far end of the GDT.
- */
-#define FIRST_RESERVED_GDT_PAGE  14
-#define FIRST_RESERVED_GDT_BYTE  (FIRST_RESERVED_GDT_PAGE * 4096)
-#define FIRST_RESERVED_GDT_ENTRY (FIRST_RESERVED_GDT_BYTE / 8)
-
-/*
- * Send an array of these to HYPERVISOR_set_trap_table()
- * The privilege level specifies which modes may enter a trap via a software
- * interrupt. On x86/64, since rings 1 and 2 are unavailable, we allocate
- * privilege levels as follows:
- *  Level == 0: No one may enter
- *  Level == 1: Kernel may enter
- *  Level == 2: Kernel may enter
- *  Level == 3: Everyone may enter
- */
-#define TI_GET_DPL(_ti)		((_ti)->flags & 3)
-#define TI_GET_IF(_ti)		((_ti)->flags & 4)
-#define TI_SET_DPL(_ti, _dpl)	((_ti)->flags |= (_dpl))
-#define TI_SET_IF(_ti, _if)	((_ti)->flags |= ((!!(_if))<<2))
-
-#ifndef __ASSEMBLY__
-struct trap_info {
-    uint8_t       vector;  /* exception vector                              */
-    uint8_t       flags;   /* 0-3: privilege level; 4: clear event enable?  */
-    uint16_t      cs;      /* code selector                                 */
-    unsigned long address; /* code offset                                   */
-};
-DEFINE_GUEST_HANDLE_STRUCT(trap_info);
-
-struct arch_shared_info {
-    unsigned long max_pfn;                  /* max pfn that appears in table */
-    /* Frame containing list of mfns containing list of mfns containing p2m. */
-    unsigned long pfn_to_mfn_frame_list_list;
-    unsigned long nmi_reason;
-};
-#endif	/* !__ASSEMBLY__ */
-
-#ifdef CONFIG_X86_32
-#include <asm/xen/interface_32.h>
-#else
-#include <asm/xen/interface_64.h>
-#endif
-
-#include <asm/pvclock-abi.h>
-
-#ifndef __ASSEMBLY__
-/*
- * The following is all CPU context. Note that the fpu_ctxt block is filled
- * in by FXSAVE if the CPU has feature FXSR; otherwise FSAVE is used.
- */
-struct vcpu_guest_context {
-    /* FPU registers come first so they can be aligned for FXSAVE/FXRSTOR. */
-    struct { char x[512]; } fpu_ctxt;       /* User-level FPU registers     */
-#define VGCF_I387_VALID (1<<0)
-#define VGCF_HVM_GUEST  (1<<1)
-#define VGCF_IN_KERNEL  (1<<2)
-    unsigned long flags;                    /* VGCF_* flags                 */
-    struct cpu_user_regs user_regs;         /* User-level CPU registers     */
-    struct trap_info trap_ctxt[256];        /* Virtual IDT                  */
-    unsigned long ldt_base, ldt_ents;       /* LDT (linear address, # ents) */
-    unsigned long gdt_frames[16], gdt_ents; /* GDT (machine frames, # ents) */
-    unsigned long kernel_ss, kernel_sp;     /* Virtual TSS (only SS1/SP1)   */
-    /* NB. User pagetable on x86/64 is placed in ctrlreg[1]. */
-    unsigned long ctrlreg[8];               /* CR0-CR7 (control registers)  */
-    unsigned long debugreg[8];              /* DB0-DB7 (debug registers)    */
-#ifdef __i386__
-    unsigned long event_callback_cs;        /* CS:EIP of event callback     */
-    unsigned long event_callback_eip;
-    unsigned long failsafe_callback_cs;     /* CS:EIP of failsafe callback  */
-    unsigned long failsafe_callback_eip;
-#else
-    unsigned long event_callback_eip;
-    unsigned long failsafe_callback_eip;
-    unsigned long syscall_callback_eip;
-#endif
-    unsigned long vm_assist;                /* VMASST_TYPE_* bitmap */
-#ifdef __x86_64__
-    /* Segment base addresses. */
-    uint64_t      fs_base;
-    uint64_t      gs_base_kernel;
-    uint64_t      gs_base_user;
-#endif
-};
-DEFINE_GUEST_HANDLE_STRUCT(vcpu_guest_context);
-#endif	/* !__ASSEMBLY__ */
-
-/*
- * Prefix forces emulation of some non-trapping instructions.
- * Currently only CPUID.
- */
-#ifdef __ASSEMBLY__
-#define XEN_EMULATE_PREFIX .byte 0x0f,0x0b,0x78,0x65,0x6e ;
-#define XEN_CPUID          XEN_EMULATE_PREFIX cpuid
-#else
-#define XEN_EMULATE_PREFIX ".byte 0x0f,0x0b,0x78,0x65,0x6e ; "
-#define XEN_CPUID          XEN_EMULATE_PREFIX "cpuid"
-#endif
+#include <uapi/asm/xen/interface.h>
 
 #endif /* _ASM_X86_XEN_INTERFACE_H */
diff --git a/arch/x86/include/asm/xen/interface_32.h b/arch/x86/include/asm/xen/interface_32.h
index 8413688..772174f 100644
--- a/arch/x86/include/asm/xen/interface_32.h
+++ b/arch/x86/include/asm/xen/interface_32.h
@@ -1,102 +1,6 @@
-/******************************************************************************
- * arch-x86_32.h
- *
- * Guest OS interface to x86 32-bit Xen.
- *
- * Copyright (c) 2004, K A Fraser
- */
-
 #ifndef _ASM_X86_XEN_INTERFACE_32_H
 #define _ASM_X86_XEN_INTERFACE_32_H
 
-
-/*
- * These flat segments are in the Xen-private section of every GDT. Since these
- * are also present in the initial GDT, many OSes will be able to avoid
- * installing their own GDT.
- */
-#define FLAT_RING1_CS 0xe019    /* GDT index 259 */
-#define FLAT_RING1_DS 0xe021    /* GDT index 260 */
-#define FLAT_RING1_SS 0xe021    /* GDT index 260 */
-#define FLAT_RING3_CS 0xe02b    /* GDT index 261 */
-#define FLAT_RING3_DS 0xe033    /* GDT index 262 */
-#define FLAT_RING3_SS 0xe033    /* GDT index 262 */
-
-#define FLAT_KERNEL_CS FLAT_RING1_CS
-#define FLAT_KERNEL_DS FLAT_RING1_DS
-#define FLAT_KERNEL_SS FLAT_RING1_SS
-#define FLAT_USER_CS    FLAT_RING3_CS
-#define FLAT_USER_DS    FLAT_RING3_DS
-#define FLAT_USER_SS    FLAT_RING3_SS
-
-/* And the trap vector is... */
-#define TRAP_INSTR "int $0x82"
-
-#define __MACH2PHYS_VIRT_START 0xF5800000
-#define __MACH2PHYS_VIRT_END   0xF6800000
-
-#define __MACH2PHYS_SHIFT      2
-
-/*
- * Virtual addresses beyond this are not modifiable by guest OSes. The
- * machine->physical mapping table starts at this address, read-only.
- */
-#define __HYPERVISOR_VIRT_START 0xF5800000
-
-#ifndef __ASSEMBLY__
-
-struct cpu_user_regs {
-    uint32_t ebx;
-    uint32_t ecx;
-    uint32_t edx;
-    uint32_t esi;
-    uint32_t edi;
-    uint32_t ebp;
-    uint32_t eax;
-    uint16_t error_code;    /* private */
-    uint16_t entry_vector;  /* private */
-    uint32_t eip;
-    uint16_t cs;
-    uint8_t  saved_upcall_mask;
-    uint8_t  _pad0;
-    uint32_t eflags;        /* eflags.IF == !saved_upcall_mask */
-    uint32_t esp;
-    uint16_t ss, _pad1;
-    uint16_t es, _pad2;
-    uint16_t ds, _pad3;
-    uint16_t fs, _pad4;
-    uint16_t gs, _pad5;
-};
-DEFINE_GUEST_HANDLE_STRUCT(cpu_user_regs);
-
-typedef uint64_t tsc_timestamp_t; /* RDTSC timestamp */
-
-struct arch_vcpu_info {
-    unsigned long cr2;
-    unsigned long pad[5]; /* sizeof(struct vcpu_info) == 64 */
-};
-
-struct xen_callback {
-	unsigned long cs;
-	unsigned long eip;
-};
-typedef struct xen_callback xen_callback_t;
-
-#define XEN_CALLBACK(__cs, __eip)				\
-	((struct xen_callback){ .cs = (__cs), .eip = (unsigned long)(__eip) })
-#endif /* !__ASSEMBLY__ */
-
-
-/*
- * Page-directory addresses above 4GB do not fit into architectural %cr3.
- * When accessing %cr3, or equivalent field in vcpu_guest_context, guests
- * must use the following accessor macros to pack/unpack valid MFNs.
- *
- * Note that Xen is using the fact that the pagetable base is always
- * page-aligned, and putting the 12 MSB of the address into the 12 LSB
- * of cr3.
- */
-#define xen_pfn_to_cr3(pfn) (((unsigned)(pfn) << 12) | ((unsigned)(pfn) >> 20))
-#define xen_cr3_to_pfn(cr3) (((unsigned)(cr3) >> 12) | ((unsigned)(cr3) << 20))
+#include <uapi/asm/xen/interface_32.h>
 
 #endif /* _ASM_X86_XEN_INTERFACE_32_H */
diff --git a/arch/x86/include/asm/xen/interface_64.h b/arch/x86/include/asm/xen/interface_64.h
index 839a481..6d73c4c 100644
--- a/arch/x86/include/asm/xen/interface_64.h
+++ b/arch/x86/include/asm/xen/interface_64.h
@@ -1,148 +1,6 @@
 #ifndef _ASM_X86_XEN_INTERFACE_64_H
 #define _ASM_X86_XEN_INTERFACE_64_H
 
-/*
- * 64-bit segment selectors
- * These flat segments are in the Xen-private section of every GDT. Since these
- * are also present in the initial GDT, many OSes will be able to avoid
- * installing their own GDT.
- */
-
-#define FLAT_RING3_CS32 0xe023  /* GDT index 260 */
-#define FLAT_RING3_CS64 0xe033  /* GDT index 261 */
-#define FLAT_RING3_DS32 0xe02b  /* GDT index 262 */
-#define FLAT_RING3_DS64 0x0000  /* NULL selector */
-#define FLAT_RING3_SS32 0xe02b  /* GDT index 262 */
-#define FLAT_RING3_SS64 0xe02b  /* GDT index 262 */
-
-#define FLAT_KERNEL_DS64 FLAT_RING3_DS64
-#define FLAT_KERNEL_DS32 FLAT_RING3_DS32
-#define FLAT_KERNEL_DS   FLAT_KERNEL_DS64
-#define FLAT_KERNEL_CS64 FLAT_RING3_CS64
-#define FLAT_KERNEL_CS32 FLAT_RING3_CS32
-#define FLAT_KERNEL_CS   FLAT_KERNEL_CS64
-#define FLAT_KERNEL_SS64 FLAT_RING3_SS64
-#define FLAT_KERNEL_SS32 FLAT_RING3_SS32
-#define FLAT_KERNEL_SS   FLAT_KERNEL_SS64
-
-#define FLAT_USER_DS64 FLAT_RING3_DS64
-#define FLAT_USER_DS32 FLAT_RING3_DS32
-#define FLAT_USER_DS   FLAT_USER_DS64
-#define FLAT_USER_CS64 FLAT_RING3_CS64
-#define FLAT_USER_CS32 FLAT_RING3_CS32
-#define FLAT_USER_CS   FLAT_USER_CS64
-#define FLAT_USER_SS64 FLAT_RING3_SS64
-#define FLAT_USER_SS32 FLAT_RING3_SS32
-#define FLAT_USER_SS   FLAT_USER_SS64
-
-#define __HYPERVISOR_VIRT_START 0xFFFF800000000000
-#define __HYPERVISOR_VIRT_END   0xFFFF880000000000
-#define __MACH2PHYS_VIRT_START  0xFFFF800000000000
-#define __MACH2PHYS_VIRT_END    0xFFFF804000000000
-#define __MACH2PHYS_SHIFT       3
-
-/*
- * int HYPERVISOR_set_segment_base(unsigned int which, unsigned long base)
- *  @which == SEGBASE_*  ;  @base == 64-bit base address
- * Returns 0 on success.
- */
-#define SEGBASE_FS          0
-#define SEGBASE_GS_USER     1
-#define SEGBASE_GS_KERNEL   2
-#define SEGBASE_GS_USER_SEL 3 /* Set user %gs specified in base[15:0] */
-
-/*
- * int HYPERVISOR_iret(void)
- * All arguments are on the kernel stack, in the following format.
- * Never returns if successful. Current kernel context is lost.
- * The saved CS is mapped as follows:
- *   RING0 -> RING3 kernel mode.
- *   RING1 -> RING3 kernel mode.
- *   RING2 -> RING3 kernel mode.
- *   RING3 -> RING3 user mode.
- * However RING0 indicates that the guest kernel should return to iteself
- * directly with
- *      orb   $3,1*8(%rsp)
- *      iretq
- * If flags contains VGCF_in_syscall:
- *   Restore RAX, RIP, RFLAGS, RSP.
- *   Discard R11, RCX, CS, SS.
- * Otherwise:
- *   Restore RAX, R11, RCX, CS:RIP, RFLAGS, SS:RSP.
- * All other registers are saved on hypercall entry and restored to user.
- */
-/* Guest exited in SYSCALL context? Return to guest with SYSRET? */
-#define _VGCF_in_syscall 8
-#define VGCF_in_syscall  (1<<_VGCF_in_syscall)
-#define VGCF_IN_SYSCALL  VGCF_in_syscall
-
-#ifndef __ASSEMBLY__
-
-struct iret_context {
-    /* Top of stack (%rsp at point of hypercall). */
-    uint64_t rax, r11, rcx, flags, rip, cs, rflags, rsp, ss;
-    /* Bottom of iret stack frame. */
-};
-
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
-/* Anonymous union includes both 32- and 64-bit names (e.g., eax/rax). */
-#define __DECL_REG(name) union { \
-    uint64_t r ## name, e ## name; \
-    uint32_t _e ## name; \
-}
-#else
-/* Non-gcc sources must always use the proper 64-bit name (e.g., rax). */
-#define __DECL_REG(name) uint64_t r ## name
-#endif
-
-struct cpu_user_regs {
-    uint64_t r15;
-    uint64_t r14;
-    uint64_t r13;
-    uint64_t r12;
-    __DECL_REG(bp);
-    __DECL_REG(bx);
-    uint64_t r11;
-    uint64_t r10;
-    uint64_t r9;
-    uint64_t r8;
-    __DECL_REG(ax);
-    __DECL_REG(cx);
-    __DECL_REG(dx);
-    __DECL_REG(si);
-    __DECL_REG(di);
-    uint32_t error_code;    /* private */
-    uint32_t entry_vector;  /* private */
-    __DECL_REG(ip);
-    uint16_t cs, _pad0[1];
-    uint8_t  saved_upcall_mask;
-    uint8_t  _pad1[3];
-    __DECL_REG(flags);      /* rflags.IF == !saved_upcall_mask */
-    __DECL_REG(sp);
-    uint16_t ss, _pad2[3];
-    uint16_t es, _pad3[3];
-    uint16_t ds, _pad4[3];
-    uint16_t fs, _pad5[3]; /* Non-zero => takes precedence over fs_base.     */
-    uint16_t gs, _pad6[3]; /* Non-zero => takes precedence over gs_base_usr. */
-};
-DEFINE_GUEST_HANDLE_STRUCT(cpu_user_regs);
-
-#undef __DECL_REG
-
-#define xen_pfn_to_cr3(pfn) ((unsigned long)(pfn) << 12)
-#define xen_cr3_to_pfn(cr3) ((unsigned long)(cr3) >> 12)
-
-struct arch_vcpu_info {
-    unsigned long cr2;
-    unsigned long pad; /* sizeof(vcpu_info_t) == 64 */
-};
-
-typedef unsigned long xen_callback_t;
-
-#define XEN_CALLBACK(__cs, __rip)				\
-	((unsigned long)(__rip))
-
-#endif /* !__ASSEMBLY__ */
-
+#include <uapi/asm/xen/interface_64.h>
 
 #endif /* _ASM_X86_XEN_INTERFACE_64_H */
diff --git a/arch/x86/include/uapi/asm/Kbuild b/arch/x86/include/uapi/asm/Kbuild
index 3dec769..5811a82 100644
--- a/arch/x86/include/uapi/asm/Kbuild
+++ b/arch/x86/include/uapi/asm/Kbuild
@@ -41,6 +41,7 @@ header-y += prctl.h
 header-y += processor-flags.h
 header-y += ptrace-abi.h
 header-y += ptrace.h
+header-y += pvclock-abi.h
 header-y += resource.h
 header-y += sembuf.h
 header-y += setup.h
@@ -63,3 +64,4 @@ header-y += unistd.h
 header-y += vm86.h
 header-y += vmx.h
 header-y += vsyscall.h
+header-y += xen/
diff --git a/arch/x86/include/uapi/asm/pvclock-abi.h b/arch/x86/include/uapi/asm/pvclock-abi.h
new file mode 100644
index 0000000..2dfc62bf
--- /dev/null
+++ b/arch/x86/include/uapi/asm/pvclock-abi.h
@@ -0,0 +1,47 @@
+#ifndef _UAPI_ASM_X86_PVCLOCK_ABI_H
+#define _UAPI_ASM_X86_PVCLOCK_ABI_H
+#ifndef __ASSEMBLY__
+
+#include <linux/types.h>
+
+/*
+ * These structs MUST NOT be changed.
+ * They are the ABI between hypervisor and guest OS.
+ * Both Xen and KVM are using this.
+ *
+ * pvclock_vcpu_time_info holds the system time and the tsc timestamp
+ * of the last update. So the guest can use the tsc delta to get a
+ * more precise system time.  There is one per virtual cpu.
+ *
+ * pvclock_wall_clock references the point in time when the system
+ * time was zero (usually boot time), thus the guest calculates the
+ * current wall clock by adding the system time.
+ *
+ * Protocol for the "version" fields is: hypervisor raises it (making
+ * it uneven) before it starts updating the fields and raises it again
+ * (making it even) when it is done.  Thus the guest can make sure the
+ * time values it got are consistent by checking the version before
+ * and after reading them.
+ */
+
+struct pvclock_vcpu_time_info {
+	__u32   version;
+	__u32   pad0;
+	__u64   tsc_timestamp;
+	__u64   system_time;
+	__u32   tsc_to_system_mul;
+	__s8    tsc_shift;
+	__u8    flags;
+	__u8    pad[2];
+} __attribute__((__packed__)); /* 32 bytes */
+
+struct pvclock_wall_clock {
+	__u32   version;
+	__u32   sec;
+	__u32   nsec;
+} __attribute__((__packed__));
+
+#define PVCLOCK_TSC_STABLE_BIT	(1 << 0)
+#define PVCLOCK_GUEST_STOPPED	(1 << 1)
+#endif /* __ASSEMBLY__ */
+#endif /* _UAPI_ASM_X86_PVCLOCK_ABI_H */
diff --git a/arch/x86/include/uapi/asm/xen/Kbuild b/arch/x86/include/uapi/asm/xen/Kbuild
new file mode 100644
index 0000000..6562c9d
--- /dev/null
+++ b/arch/x86/include/uapi/asm/xen/Kbuild
@@ -0,0 +1,5 @@
+# UAPI Header export list
+
+header-y += interface.h
+header-y += interface_32.h
+header-y += interface_64.h
diff --git a/arch/x86/include/uapi/asm/xen/interface.h b/arch/x86/include/uapi/asm/xen/interface.h
new file mode 100644
index 0000000..0b03ccb
--- /dev/null
+++ b/arch/x86/include/uapi/asm/xen/interface.h
@@ -0,0 +1,198 @@
+/******************************************************************************
+ * arch-x86_32.h
+ *
+ * Guest OS interface to x86 Xen.
+ *
+ * Copyright (c) 2004, K A Fraser
+ */
+
+#ifndef _UAPI_ASM_X86_XEN_INTERFACE_H
+#define _UAPI_ASM_X86_XEN_INTERFACE_H
+
+#include <linux/types.h>
+
+#ifdef __XEN__
+#define __DEFINE_GUEST_HANDLE(name, type) \
+    typedef struct { type *p; } __guest_handle_ ## name
+#else
+#define __DEFINE_GUEST_HANDLE(name, type) \
+    typedef type * __guest_handle_ ## name
+#endif
+
+#define DEFINE_GUEST_HANDLE_STRUCT(name) \
+	__DEFINE_GUEST_HANDLE(name, struct name)
+#define DEFINE_GUEST_HANDLE(name) __DEFINE_GUEST_HANDLE(name, name)
+#define GUEST_HANDLE(name)        __guest_handle_ ## name
+
+#ifdef __XEN__
+#if defined(__i386__)
+#define set_xen_guest_handle(hnd, val)			\
+	do {						\
+		if (sizeof(hnd) == 8)			\
+			*(__u64 *)&(hnd) = 0;	\
+		(hnd).p = val;				\
+	} while (0)
+#elif defined(__x86_64__)
+#define set_xen_guest_handle(hnd, val)	do { (hnd).p = val; } while (0)
+#endif
+#else
+#if defined(__i386__)
+#define set_xen_guest_handle(hnd, val)			\
+	do {						\
+		if (sizeof(hnd) == 8)			\
+			*(__u64 *)&(hnd) = 0;	\
+		(hnd) = val;				\
+	} while (0)
+#elif defined(__x86_64__)
+#define set_xen_guest_handle(hnd, val)	do { (hnd) = val; } while (0)
+#endif
+#endif
+
+#ifndef __ASSEMBLY__
+/* Explicitly size integers that represent pfns in the public interface
+ * with Xen so that on ARM we can have one ABI that works for 32 and 64
+ * bit guests. */
+typedef unsigned long xen_pfn_t;
+#define PRI_xen_pfn "lx"
+typedef unsigned long xen_ulong_t;
+#define PRI_xen_ulong "lx"
+typedef long xen_long_t;
+#define PRI_xen_long "lx"
+
+/* Guest handles for primitive C types. */
+__DEFINE_GUEST_HANDLE(uchar, unsigned char);
+__DEFINE_GUEST_HANDLE(uint,  unsigned int);
+DEFINE_GUEST_HANDLE(char);
+DEFINE_GUEST_HANDLE(int);
+DEFINE_GUEST_HANDLE(void);
+/* HACK many xen parts expect to find these handles, sigh */
+#ifndef uint64_t
+typedef __u64 uint64_t;
+#endif /* uint64_t */
+#ifndef uint32_t
+typedef __u32 uint32_t;
+#endif /* uint32_t */
+DEFINE_GUEST_HANDLE(uint64_t);
+DEFINE_GUEST_HANDLE(uint32_t);
+DEFINE_GUEST_HANDLE(xen_pfn_t);
+DEFINE_GUEST_HANDLE(xen_ulong_t);
+#endif
+
+#ifndef HYPERVISOR_VIRT_START
+#define HYPERVISOR_VIRT_START mk_unsigned_long(__HYPERVISOR_VIRT_START)
+#endif
+
+#define MACH2PHYS_VIRT_START  mk_unsigned_long(__MACH2PHYS_VIRT_START)
+#define MACH2PHYS_VIRT_END    mk_unsigned_long(__MACH2PHYS_VIRT_END)
+#define MACH2PHYS_NR_ENTRIES  ((MACH2PHYS_VIRT_END-MACH2PHYS_VIRT_START)>>__MACH2PHYS_SHIFT)
+
+/* Maximum number of virtual CPUs in multi-processor guests. */
+#define MAX_VIRT_CPUS 32
+
+/*
+ * SEGMENT DESCRIPTOR TABLES
+ */
+/*
+ * A number of GDT entries are reserved by Xen. These are not situated at the
+ * start of the GDT because some stupid OSes export hard-coded selector values
+ * in their ABI. These hard-coded values are always near the start of the GDT,
+ * so Xen places itself out of the way, at the far end of the GDT.
+ */
+#define FIRST_RESERVED_GDT_PAGE  14
+#define FIRST_RESERVED_GDT_BYTE  (FIRST_RESERVED_GDT_PAGE * 4096)
+#define FIRST_RESERVED_GDT_ENTRY (FIRST_RESERVED_GDT_BYTE / 8)
+
+/*
+ * Send an array of these to HYPERVISOR_set_trap_table()
+ * The privilege level specifies which modes may enter a trap via a software
+ * interrupt. On x86/64, since rings 1 and 2 are unavailable, we allocate
+ * privilege levels as follows:
+ *  Level == 0: No one may enter
+ *  Level == 1: Kernel may enter
+ *  Level == 2: Kernel may enter
+ *  Level == 3: Everyone may enter
+ */
+#define TI_GET_DPL(_ti)		((_ti)->flags & 3)
+#define TI_GET_IF(_ti)		((_ti)->flags & 4)
+#define TI_SET_DPL(_ti, _dpl)	((_ti)->flags |= (_dpl))
+#define TI_SET_IF(_ti, _if)	((_ti)->flags |= ((!!(_if))<<2))
+
+#ifndef __ASSEMBLY__
+struct trap_info {
+    __u8       vector;  /* exception vector                              */
+    __u8       flags;   /* 0-3: privilege level; 4: clear event enable?  */
+    __u16      cs;      /* code selector                                 */
+    unsigned long address; /* code offset                                   */
+};
+DEFINE_GUEST_HANDLE_STRUCT(trap_info);
+
+struct arch_shared_info {
+    unsigned long max_pfn;                  /* max pfn that appears in table */
+    /* Frame containing list of mfns containing list of mfns containing p2m. */
+    unsigned long pfn_to_mfn_frame_list_list;
+    unsigned long nmi_reason;
+};
+#endif	/* !__ASSEMBLY__ */
+
+#ifdef CONFIG_X86_32
+#include <asm/xen/interface_32.h>
+#else
+#include <asm/xen/interface_64.h>
+#endif
+
+#include <asm/pvclock-abi.h>
+
+#ifndef __ASSEMBLY__
+/*
+ * The following is all CPU context. Note that the fpu_ctxt block is filled
+ * in by FXSAVE if the CPU has feature FXSR; otherwise FSAVE is used.
+ */
+struct vcpu_guest_context {
+    /* FPU registers come first so they can be aligned for FXSAVE/FXRSTOR. */
+    struct { char x[512]; } fpu_ctxt;       /* User-level FPU registers     */
+#define VGCF_I387_VALID (1<<0)
+#define VGCF_HVM_GUEST  (1<<1)
+#define VGCF_IN_KERNEL  (1<<2)
+    unsigned long flags;                    /* VGCF_* flags                 */
+    struct cpu_user_regs user_regs;         /* User-level CPU registers     */
+    struct trap_info trap_ctxt[256];        /* Virtual IDT                  */
+    unsigned long ldt_base, ldt_ents;       /* LDT (linear address, # ents) */
+    unsigned long gdt_frames[16], gdt_ents; /* GDT (machine frames, # ents) */
+    unsigned long kernel_ss, kernel_sp;     /* Virtual TSS (only SS1/SP1)   */
+    /* NB. User pagetable on x86/64 is placed in ctrlreg[1]. */
+    unsigned long ctrlreg[8];               /* CR0-CR7 (control registers)  */
+    unsigned long debugreg[8];              /* DB0-DB7 (debug registers)    */
+#ifdef __i386__
+    unsigned long event_callback_cs;        /* CS:EIP of event callback     */
+    unsigned long event_callback_eip;
+    unsigned long failsafe_callback_cs;     /* CS:EIP of failsafe callback  */
+    unsigned long failsafe_callback_eip;
+#else
+    unsigned long event_callback_eip;
+    unsigned long failsafe_callback_eip;
+    unsigned long syscall_callback_eip;
+#endif
+    unsigned long vm_assist;                /* VMASST_TYPE_* bitmap */
+#ifdef __x86_64__
+    /* Segment base addresses. */
+    __u64      fs_base;
+    __u64      gs_base_kernel;
+    __u64      gs_base_user;
+#endif
+};
+DEFINE_GUEST_HANDLE_STRUCT(vcpu_guest_context);
+#endif	/* !__ASSEMBLY__ */
+
+/*
+ * Prefix forces emulation of some non-trapping instructions.
+ * Currently only CPUID.
+ */
+#ifdef __ASSEMBLY__
+#define XEN_EMULATE_PREFIX .byte 0x0f,0x0b,0x78,0x65,0x6e ;
+#define XEN_CPUID          XEN_EMULATE_PREFIX cpuid
+#else
+#define XEN_EMULATE_PREFIX ".byte 0x0f,0x0b,0x78,0x65,0x6e ; "
+#define XEN_CPUID          XEN_EMULATE_PREFIX "cpuid"
+#endif
+
+#endif /* _UAPI_ASM_X86_XEN_INTERFACE_H */
diff --git a/arch/x86/include/uapi/asm/xen/interface_32.h b/arch/x86/include/uapi/asm/xen/interface_32.h
new file mode 100644
index 0000000..bb1c93e
--- /dev/null
+++ b/arch/x86/include/uapi/asm/xen/interface_32.h
@@ -0,0 +1,103 @@
+/******************************************************************************
+ * arch-x86_32.h
+ *
+ * Guest OS interface to x86 32-bit Xen.
+ *
+ * Copyright (c) 2004, K A Fraser
+ */
+
+#ifndef _UAPI_ASM_X86_XEN_INTERFACE_32_H
+#define _UAPI_ASM_X86_XEN_INTERFACE_32_H
+
+#include <linux/types.h>
+
+/*
+ * These flat segments are in the Xen-private section of every GDT. Since these
+ * are also present in the initial GDT, many OSes will be able to avoid
+ * installing their own GDT.
+ */
+#define FLAT_RING1_CS 0xe019    /* GDT index 259 */
+#define FLAT_RING1_DS 0xe021    /* GDT index 260 */
+#define FLAT_RING1_SS 0xe021    /* GDT index 260 */
+#define FLAT_RING3_CS 0xe02b    /* GDT index 261 */
+#define FLAT_RING3_DS 0xe033    /* GDT index 262 */
+#define FLAT_RING3_SS 0xe033    /* GDT index 262 */
+
+#define FLAT_KERNEL_CS FLAT_RING1_CS
+#define FLAT_KERNEL_DS FLAT_RING1_DS
+#define FLAT_KERNEL_SS FLAT_RING1_SS
+#define FLAT_USER_CS    FLAT_RING3_CS
+#define FLAT_USER_DS    FLAT_RING3_DS
+#define FLAT_USER_SS    FLAT_RING3_SS
+
+/* And the trap vector is... */
+#define TRAP_INSTR "int $0x82"
+
+#define __MACH2PHYS_VIRT_START 0xF5800000
+#define __MACH2PHYS_VIRT_END   0xF6800000
+
+#define __MACH2PHYS_SHIFT      2
+
+/*
+ * Virtual addresses beyond this are not modifiable by guest OSes. The
+ * machine->physical mapping table starts at this address, read-only.
+ */
+#define __HYPERVISOR_VIRT_START 0xF5800000
+
+#ifndef __ASSEMBLY__
+
+struct cpu_user_regs {
+    __u32 ebx;
+    __u32 ecx;
+    __u32 edx;
+    __u32 esi;
+    __u32 edi;
+    __u32 ebp;
+    __u32 eax;
+    __u16 error_code;    /* private */
+    __u16 entry_vector;  /* private */
+    __u32 eip;
+    __u16 cs;
+    __u8  saved_upcall_mask;
+    __u8  _pad0;
+    __u32 eflags;        /* eflags.IF == !saved_upcall_mask */
+    __u32 esp;
+    __u16 ss, _pad1;
+    __u16 es, _pad2;
+    __u16 ds, _pad3;
+    __u16 fs, _pad4;
+    __u16 gs, _pad5;
+};
+DEFINE_GUEST_HANDLE_STRUCT(cpu_user_regs);
+
+typedef __u64 tsc_timestamp_t; /* RDTSC timestamp */
+
+struct arch_vcpu_info {
+    unsigned long cr2;
+    unsigned long pad[5]; /* sizeof(struct vcpu_info) == 64 */
+};
+
+struct xen_callback {
+	unsigned long cs;
+	unsigned long eip;
+};
+typedef struct xen_callback xen_callback_t;
+
+#define XEN_CALLBACK(__cs, __eip)				\
+	((struct xen_callback){ .cs = (__cs), .eip = (unsigned long)(__eip) })
+#endif /* !__ASSEMBLY__ */
+
+
+/*
+ * Page-directory addresses above 4GB do not fit into architectural %cr3.
+ * When accessing %cr3, or equivalent field in vcpu_guest_context, guests
+ * must use the following accessor macros to pack/unpack valid MFNs.
+ *
+ * Note that Xen is using the fact that the pagetable base is always
+ * page-aligned, and putting the 12 MSB of the address into the 12 LSB
+ * of cr3.
+ */
+#define xen_pfn_to_cr3(pfn) (((unsigned)(pfn) << 12) | ((unsigned)(pfn) >> 20))
+#define xen_cr3_to_pfn(cr3) (((unsigned)(cr3) >> 12) | ((unsigned)(cr3) << 20))
+
+#endif /* _UAPI_ASM_X86_XEN_INTERFACE_32_H */
diff --git a/arch/x86/include/uapi/asm/xen/interface_64.h b/arch/x86/include/uapi/asm/xen/interface_64.h
new file mode 100644
index 0000000..a4ed139
--- /dev/null
+++ b/arch/x86/include/uapi/asm/xen/interface_64.h
@@ -0,0 +1,150 @@
+#ifndef _UAPI_ASM_X86_XEN_INTERFACE_64_H
+#define _UAPI_ASM_X86_XEN_INTERFACE_64_H
+
+#include <linux/types.h>
+
+/*
+ * 64-bit segment selectors
+ * These flat segments are in the Xen-private section of every GDT. Since these
+ * are also present in the initial GDT, many OSes will be able to avoid
+ * installing their own GDT.
+ */
+
+#define FLAT_RING3_CS32 0xe023  /* GDT index 260 */
+#define FLAT_RING3_CS64 0xe033  /* GDT index 261 */
+#define FLAT_RING3_DS32 0xe02b  /* GDT index 262 */
+#define FLAT_RING3_DS64 0x0000  /* NULL selector */
+#define FLAT_RING3_SS32 0xe02b  /* GDT index 262 */
+#define FLAT_RING3_SS64 0xe02b  /* GDT index 262 */
+
+#define FLAT_KERNEL_DS64 FLAT_RING3_DS64
+#define FLAT_KERNEL_DS32 FLAT_RING3_DS32
+#define FLAT_KERNEL_DS   FLAT_KERNEL_DS64
+#define FLAT_KERNEL_CS64 FLAT_RING3_CS64
+#define FLAT_KERNEL_CS32 FLAT_RING3_CS32
+#define FLAT_KERNEL_CS   FLAT_KERNEL_CS64
+#define FLAT_KERNEL_SS64 FLAT_RING3_SS64
+#define FLAT_KERNEL_SS32 FLAT_RING3_SS32
+#define FLAT_KERNEL_SS   FLAT_KERNEL_SS64
+
+#define FLAT_USER_DS64 FLAT_RING3_DS64
+#define FLAT_USER_DS32 FLAT_RING3_DS32
+#define FLAT_USER_DS   FLAT_USER_DS64
+#define FLAT_USER_CS64 FLAT_RING3_CS64
+#define FLAT_USER_CS32 FLAT_RING3_CS32
+#define FLAT_USER_CS   FLAT_USER_CS64
+#define FLAT_USER_SS64 FLAT_RING3_SS64
+#define FLAT_USER_SS32 FLAT_RING3_SS32
+#define FLAT_USER_SS   FLAT_USER_SS64
+
+#define __HYPERVISOR_VIRT_START 0xFFFF800000000000
+#define __HYPERVISOR_VIRT_END   0xFFFF880000000000
+#define __MACH2PHYS_VIRT_START  0xFFFF800000000000
+#define __MACH2PHYS_VIRT_END    0xFFFF804000000000
+#define __MACH2PHYS_SHIFT       3
+
+/*
+ * int HYPERVISOR_set_segment_base(unsigned int which, unsigned long base)
+ *  @which == SEGBASE_*  ;  @base == 64-bit base address
+ * Returns 0 on success.
+ */
+#define SEGBASE_FS          0
+#define SEGBASE_GS_USER     1
+#define SEGBASE_GS_KERNEL   2
+#define SEGBASE_GS_USER_SEL 3 /* Set user %gs specified in base[15:0] */
+
+/*
+ * int HYPERVISOR_iret(void)
+ * All arguments are on the kernel stack, in the following format.
+ * Never returns if successful. Current kernel context is lost.
+ * The saved CS is mapped as follows:
+ *   RING0 -> RING3 kernel mode.
+ *   RING1 -> RING3 kernel mode.
+ *   RING2 -> RING3 kernel mode.
+ *   RING3 -> RING3 user mode.
+ * However RING0 indicates that the guest kernel should return to iteself
+ * directly with
+ *      orb   $3,1*8(%rsp)
+ *      iretq
+ * If flags contains VGCF_in_syscall:
+ *   Restore RAX, RIP, RFLAGS, RSP.
+ *   Discard R11, RCX, CS, SS.
+ * Otherwise:
+ *   Restore RAX, R11, RCX, CS:RIP, RFLAGS, SS:RSP.
+ * All other registers are saved on hypercall entry and restored to user.
+ */
+/* Guest exited in SYSCALL context? Return to guest with SYSRET? */
+#define _VGCF_in_syscall 8
+#define VGCF_in_syscall  (1<<_VGCF_in_syscall)
+#define VGCF_IN_SYSCALL  VGCF_in_syscall
+
+#ifndef __ASSEMBLY__
+
+struct iret_context {
+    /* Top of stack (%rsp at point of hypercall). */
+    __u64 rax, r11, rcx, flags, rip, cs, rflags, rsp, ss;
+    /* Bottom of iret stack frame. */
+};
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+/* Anonymous union includes both 32- and 64-bit names (e.g., eax/rax). */
+#define __DECL_REG(name) union { \
+    __u64 r ## name, e ## name; \
+    __u32 _e ## name; \
+}
+#else
+/* Non-gcc sources must always use the proper 64-bit name (e.g., rax). */
+#define __DECL_REG(name) __u64 r ## name
+#endif
+
+struct cpu_user_regs {
+    __u64 r15;
+    __u64 r14;
+    __u64 r13;
+    __u64 r12;
+    __DECL_REG(bp);
+    __DECL_REG(bx);
+    __u64 r11;
+    __u64 r10;
+    __u64 r9;
+    __u64 r8;
+    __DECL_REG(ax);
+    __DECL_REG(cx);
+    __DECL_REG(dx);
+    __DECL_REG(si);
+    __DECL_REG(di);
+    __u32 error_code;    /* private */
+    __u32 entry_vector;  /* private */
+    __DECL_REG(ip);
+    __u16 cs, _pad0[1];
+    __u8  saved_upcall_mask;
+    __u8  _pad1[3];
+    __DECL_REG(flags);      /* rflags.IF == !saved_upcall_mask */
+    __DECL_REG(sp);
+    __u16 ss, _pad2[3];
+    __u16 es, _pad3[3];
+    __u16 ds, _pad4[3];
+    __u16 fs, _pad5[3]; /* Non-zero => takes precedence over fs_base.     */
+    __u16 gs, _pad6[3]; /* Non-zero => takes precedence over gs_base_usr. */
+};
+DEFINE_GUEST_HANDLE_STRUCT(cpu_user_regs);
+
+#undef __DECL_REG
+
+#define xen_pfn_to_cr3(pfn) ((unsigned long)(pfn) << 12)
+#define xen_cr3_to_pfn(cr3) ((unsigned long)(cr3) >> 12)
+
+struct arch_vcpu_info {
+    unsigned long cr2;
+    unsigned long pad; /* sizeof(vcpu_info_t) == 64 */
+};
+
+typedef unsigned long xen_callback_t;
+
+#define XEN_CALLBACK(__cs, __rip)				\
+	((unsigned long)(__rip))
+
+#endif /* !__ASSEMBLY__ */
+
+
+#endif /* _UAPI_ASM_X86_XEN_INTERFACE_64_H */
diff --git a/include/uapi/xen/Kbuild b/include/uapi/xen/Kbuild
index 5c45962..7453b08 100644
--- a/include/uapi/xen/Kbuild
+++ b/include/uapi/xen/Kbuild
@@ -1,4 +1,5 @@
 # UAPI Header export list
+header-y += interface/
 header-y += evtchn.h
 header-y += gntalloc.h
 header-y += gntdev.h
diff --git a/include/uapi/xen/interface/Kbuild b/include/uapi/xen/interface/Kbuild
new file mode 100644
index 0000000..6a062ce
--- /dev/null
+++ b/include/uapi/xen/interface/Kbuild
@@ -0,0 +1,2 @@
+# UAPI Header export list
+header-y += xen.h
diff --git a/include/uapi/xen/interface/xen.h b/include/uapi/xen/interface/xen.h
new file mode 100644
index 0000000..d469852
--- /dev/null
+++ b/include/uapi/xen/interface/xen.h
@@ -0,0 +1,759 @@
+/******************************************************************************
+ * xen.h
+ *
+ * Guest OS interface to Xen.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Copyright (c) 2004, K A Fraser
+ */
+
+#ifndef __LINUX_PUBLIC_XEN_H__
+#define __LINUX_PUBLIC_XEN_H__
+
+#include <linux/types.h>
+#include <asm/xen/interface.h>
+
+/*
+ * XEN "SYSTEM CALLS" (a.k.a. HYPERCALLS).
+ */
+
+/*
+ * x86_32: EAX = vector; EBX, ECX, EDX, ESI, EDI = args 1, 2, 3, 4, 5.
+ *         EAX = return value
+ *         (argument registers may be clobbered on return)
+ * x86_64: RAX = vector; RDI, RSI, RDX, R10, R8, R9 = args 1, 2, 3, 4, 5, 6.
+ *         RAX = return value
+ *         (argument registers not clobbered on return; RCX, R11 are)
+ */
+#define __HYPERVISOR_set_trap_table        0
+#define __HYPERVISOR_mmu_update            1
+#define __HYPERVISOR_set_gdt               2
+#define __HYPERVISOR_stack_switch          3
+#define __HYPERVISOR_set_callbacks         4
+#define __HYPERVISOR_fpu_taskswitch        5
+#define __HYPERVISOR_sched_op_compat       6
+#define __HYPERVISOR_dom0_op               7
+#define __HYPERVISOR_set_debugreg          8
+#define __HYPERVISOR_get_debugreg          9
+#define __HYPERVISOR_update_descriptor    10
+#define __HYPERVISOR_memory_op            12
+#define __HYPERVISOR_multicall            13
+#define __HYPERVISOR_update_va_mapping    14
+#define __HYPERVISOR_set_timer_op         15
+#define __HYPERVISOR_event_channel_op_compat 16
+#define __HYPERVISOR_xen_version          17
+#define __HYPERVISOR_console_io           18
+#define __HYPERVISOR_physdev_op_compat    19
+#define __HYPERVISOR_grant_table_op       20
+#define __HYPERVISOR_vm_assist            21
+#define __HYPERVISOR_update_va_mapping_otherdomain 22
+#define __HYPERVISOR_iret                 23 /* x86 only */
+#define __HYPERVISOR_vcpu_op              24
+#define __HYPERVISOR_set_segment_base     25 /* x86/64 only */
+#define __HYPERVISOR_mmuext_op            26
+#define __HYPERVISOR_xsm_op               27
+#define __HYPERVISOR_nmi_op               28
+#define __HYPERVISOR_sched_op             29
+#define __HYPERVISOR_callback_op          30
+#define __HYPERVISOR_xenoprof_op          31
+#define __HYPERVISOR_event_channel_op     32
+#define __HYPERVISOR_physdev_op           33
+#define __HYPERVISOR_hvm_op               34
+#define __HYPERVISOR_sysctl               35
+#define __HYPERVISOR_domctl               36
+#define __HYPERVISOR_kexec_op             37
+#define __HYPERVISOR_tmem_op              38
+#define __HYPERVISOR_xc_reserved_op       39 /* reserved for XenClient */
+
+/* Architecture-specific hypercall definitions. */
+#define __HYPERVISOR_arch_0               48
+#define __HYPERVISOR_arch_1               49
+#define __HYPERVISOR_arch_2               50
+#define __HYPERVISOR_arch_3               51
+#define __HYPERVISOR_arch_4               52
+#define __HYPERVISOR_arch_5               53
+#define __HYPERVISOR_arch_6               54
+#define __HYPERVISOR_arch_7               55
+
+/*
+ * VIRTUAL INTERRUPTS
+ *
+ * Virtual interrupts that a guest OS may receive from Xen.
+ * In the side comments, 'V.' denotes a per-VCPU VIRQ while 'G.' denotes a
+ * global VIRQ. The former can be bound once per VCPU and cannot be re-bound.
+ * The latter can be allocated only once per guest: they must initially be
+ * allocated to VCPU0 but can subsequently be re-bound.
+ */
+#define VIRQ_TIMER      0  /* V. Timebase update, and/or requested timeout.  */
+#define VIRQ_DEBUG      1  /* V. Request guest to dump debug info.           */
+#define VIRQ_CONSOLE    2  /* G. (DOM0) Bytes received on emergency console. */
+#define VIRQ_DOM_EXC    3  /* G. (DOM0) Exceptional event for some domain.   */
+#define VIRQ_TBUF       4  /* G. (DOM0) Trace buffer has records available.  */
+#define VIRQ_DEBUGGER   6  /* G. (DOM0) A domain has paused for debugging.   */
+#define VIRQ_XENOPROF   7  /* V. XenOprofile interrupt: new sample available */
+#define VIRQ_CON_RING   8  /* G. (DOM0) Bytes received on console            */
+#define VIRQ_PCPU_STATE 9  /* G. (DOM0) PCPU state changed                   */
+#define VIRQ_MEM_EVENT  10 /* G. (DOM0) A memory event has occured           */
+#define VIRQ_XC_RESERVED 11 /* G. Reserved for XenClient                     */
+#define VIRQ_ENOMEM     12 /* G. (DOM0) Low on heap memory       */
+
+/* Architecture-specific VIRQ definitions. */
+#define VIRQ_ARCH_0    16
+#define VIRQ_ARCH_1    17
+#define VIRQ_ARCH_2    18
+#define VIRQ_ARCH_3    19
+#define VIRQ_ARCH_4    20
+#define VIRQ_ARCH_5    21
+#define VIRQ_ARCH_6    22
+#define VIRQ_ARCH_7    23
+
+#define NR_VIRQS       24
+
+/*
+ * enum neg_errnoval HYPERVISOR_mmu_update(const struct mmu_update reqs[],
+ *                                         unsigned count, unsigned *done_out,
+ *                                         unsigned foreigndom)
+ * @reqs is an array of mmu_update_t structures ((ptr, val) pairs).
+ * @count is the length of the above array.
+ * @pdone is an output parameter indicating number of completed operations
+ * @foreigndom[15:0]: FD, the expected owner of data pages referenced in this
+ *                    hypercall invocation. Can be DOMID_SELF.
+ * @foreigndom[31:16]: PFD, the expected owner of pagetable pages referenced
+ *                     in this hypercall invocation. The value of this field
+ *                     (x) encodes the PFD as follows:
+ *                     x == 0 => PFD == DOMID_SELF
+ *                     x != 0 => PFD == x - 1
+ *
+ * Sub-commands: ptr[1:0] specifies the appropriate MMU_* command.
+ * -------------
+ * ptr[1:0] == MMU_NORMAL_PT_UPDATE:
+ * Updates an entry in a page table belonging to PFD. If updating an L1 table,
+ * and the new table entry is valid/present, the mapped frame must belong to
+ * FD. If attempting to map an I/O page then the caller assumes the privilege
+ * of the FD.
+ * FD == DOMID_IO: Permit /only/ I/O mappings, at the priv level of the caller.
+ * FD == DOMID_XEN: Map restricted areas of Xen's heap space.
+ * ptr[:2]  -- Machine address of the page-table entry to modify.
+ * val      -- Value to write.
+ *
+ * There also certain implicit requirements when using this hypercall. The
+ * pages that make up a pagetable must be mapped read-only in the guest.
+ * This prevents uncontrolled guest updates to the pagetable. Xen strictly
+ * enforces this, and will disallow any pagetable update which will end up
+ * mapping pagetable page RW, and will disallow using any writable page as a
+ * pagetable. In practice it means that when constructing a page table for a
+ * process, thread, etc, we MUST be very dilligient in following these rules:
+ *  1). Start with top-level page (PGD or in Xen language: L4). Fill out
+ *      the entries.
+ *  2). Keep on going, filling out the upper (PUD or L3), and middle (PMD
+ *      or L2).
+ *  3). Start filling out the PTE table (L1) with the PTE entries. Once
+ *      done, make sure to set each of those entries to RO (so writeable bit
+ *      is unset). Once that has been completed, set the PMD (L2) for this
+ *      PTE table as RO.
+ *  4). When completed with all of the PMD (L2) entries, and all of them have
+ *      been set to RO, make sure to set RO the PUD (L3). Do the same
+ *      operation on PGD (L4) pagetable entries that have a PUD (L3) entry.
+ *  5). Now before you can use those pages (so setting the cr3), you MUST also
+ *      pin them so that the hypervisor can verify the entries. This is done
+ *      via the HYPERVISOR_mmuext_op(MMUEXT_PIN_L4_TABLE, guest physical frame
+ *      number of the PGD (L4)). And this point the HYPERVISOR_mmuext_op(
+ *      MMUEXT_NEW_BASEPTR, guest physical frame number of the PGD (L4)) can be
+ *      issued.
+ * For 32-bit guests, the L4 is not used (as there is less pagetables), so
+ * instead use L3.
+ * At this point the pagetables can be modified using the MMU_NORMAL_PT_UPDATE
+ * hypercall. Also if so desired the OS can also try to write to the PTE
+ * and be trapped by the hypervisor (as the PTE entry is RO).
+ *
+ * To deallocate the pages, the operations are the reverse of the steps
+ * mentioned above. The argument is MMUEXT_UNPIN_TABLE for all levels and the
+ * pagetable MUST not be in use (meaning that the cr3 is not set to it).
+ *
+ * ptr[1:0] == MMU_MACHPHYS_UPDATE:
+ * Updates an entry in the machine->pseudo-physical mapping table.
+ * ptr[:2]  -- Machine address within the frame whose mapping to modify.
+ *             The frame must belong to the FD, if one is specified.
+ * val      -- Value to write into the mapping entry.
+ *
+ * ptr[1:0] == MMU_PT_UPDATE_PRESERVE_AD:
+ * As MMU_NORMAL_PT_UPDATE above, but A/D bits currently in the PTE are ORed
+ * with those in @val.
+ *
+ * @val is usually the machine frame number along with some attributes.
+ * The attributes by default follow the architecture defined bits. Meaning that
+ * if this is a X86_64 machine and four page table layout is used, the layout
+ * of val is:
+ *  - 63 if set means No execute (NX)
+ *  - 46-13 the machine frame number
+ *  - 12 available for guest
+ *  - 11 available for guest
+ *  - 10 available for guest
+ *  - 9 available for guest
+ *  - 8 global
+ *  - 7 PAT (PSE is disabled, must use hypercall to make 4MB or 2MB pages)
+ *  - 6 dirty
+ *  - 5 accessed
+ *  - 4 page cached disabled
+ *  - 3 page write through
+ *  - 2 userspace accessible
+ *  - 1 writeable
+ *  - 0 present
+ *
+ *  The one bits that does not fit with the default layout is the PAGE_PSE
+ *  also called PAGE_PAT). The MMUEXT_[UN]MARK_SUPER arguments to the
+ *  HYPERVISOR_mmuext_op serve as mechanism to set a pagetable to be 4MB
+ *  (or 2MB) instead of using the PAGE_PSE bit.
+ *
+ *  The reason that the PAGE_PSE (bit 7) is not being utilized is due to Xen
+ *  using it as the Page Attribute Table (PAT) bit - for details on it please
+ *  refer to Intel SDM 10.12. The PAT allows to set the caching attributes of
+ *  pages instead of using MTRRs.
+ *
+ *  The PAT MSR is as follows (it is a 64-bit value, each entry is 8 bits):
+ *                    PAT4                 PAT0
+ *  +-----+-----+----+----+----+-----+----+----+
+ *  | UC  | UC- | WC | WB | UC | UC- | WC | WB |  <= Linux
+ *  +-----+-----+----+----+----+-----+----+----+
+ *  | UC  | UC- | WT | WB | UC | UC- | WT | WB |  <= BIOS (default when machine boots)
+ *  +-----+-----+----+----+----+-----+----+----+
+ *  | rsv | rsv | WP | WC | UC | UC- | WT | WB |  <= Xen
+ *  +-----+-----+----+----+----+-----+----+----+
+ *
+ *  The lookup of this index table translates to looking up
+ *  Bit 7, Bit 4, and Bit 3 of val entry:
+ *
+ *  PAT/PSE (bit 7) ... PCD (bit 4) .. PWT (bit 3).
+ *
+ *  If all bits are off, then we are using PAT0. If bit 3 turned on,
+ *  then we are using PAT1, if bit 3 and bit 4, then PAT2..
+ *
+ *  As you can see, the Linux PAT1 translates to PAT4 under Xen. Which means
+ *  that if a guest that follows Linux's PAT setup and would like to set Write
+ *  Combined on pages it MUST use PAT4 entry. Meaning that Bit 7 (PAGE_PAT) is
+ *  set. For example, under Linux it only uses PAT0, PAT1, and PAT2 for the
+ *  caching as:
+ *
+ *   WB = none (so PAT0)
+ *   WC = PWT (bit 3 on)
+ *   UC = PWT | PCD (bit 3 and 4 are on).
+ *
+ * To make it work with Xen, it needs to translate the WC bit as so:
+ *
+ *  PWT (so bit 3 on) --> PAT (so bit 7 is on) and clear bit 3
+ *
+ * And to translate back it would:
+ *
+ * PAT (bit 7 on) --> PWT (bit 3 on) and clear bit 7.
+ */
+#define MMU_NORMAL_PT_UPDATE      0 /* checked '*ptr = val'. ptr is MA.       */
+#define MMU_MACHPHYS_UPDATE       1 /* ptr = MA of frame to modify entry for  */
+#define MMU_PT_UPDATE_PRESERVE_AD 2 /* atomically: *ptr = val | (*ptr&(A|D)) */
+
+/*
+ * MMU EXTENDED OPERATIONS
+ *
+ * enum neg_errnoval HYPERVISOR_mmuext_op(mmuext_op_t uops[],
+ *                                        unsigned int count,
+ *                                        unsigned int *pdone,
+ *                                        unsigned int foreigndom)
+ */
+/* HYPERVISOR_mmuext_op() accepts a list of mmuext_op structures.
+ * A foreigndom (FD) can be specified (or DOMID_SELF for none).
+ * Where the FD has some effect, it is described below.
+ *
+ * cmd: MMUEXT_(UN)PIN_*_TABLE
+ * mfn: Machine frame number to be (un)pinned as a p.t. page.
+ *      The frame must belong to the FD, if one is specified.
+ *
+ * cmd: MMUEXT_NEW_BASEPTR
+ * mfn: Machine frame number of new page-table base to install in MMU.
+ *
+ * cmd: MMUEXT_NEW_USER_BASEPTR [x86/64 only]
+ * mfn: Machine frame number of new page-table base to install in MMU
+ *      when in user space.
+ *
+ * cmd: MMUEXT_TLB_FLUSH_LOCAL
+ * No additional arguments. Flushes local TLB.
+ *
+ * cmd: MMUEXT_INVLPG_LOCAL
+ * linear_addr: Linear address to be flushed from the local TLB.
+ *
+ * cmd: MMUEXT_TLB_FLUSH_MULTI
+ * vcpumask: Pointer to bitmap of VCPUs to be flushed.
+ *
+ * cmd: MMUEXT_INVLPG_MULTI
+ * linear_addr: Linear address to be flushed.
+ * vcpumask: Pointer to bitmap of VCPUs to be flushed.
+ *
+ * cmd: MMUEXT_TLB_FLUSH_ALL
+ * No additional arguments. Flushes all VCPUs' TLBs.
+ *
+ * cmd: MMUEXT_INVLPG_ALL
+ * linear_addr: Linear address to be flushed from all VCPUs' TLBs.
+ *
+ * cmd: MMUEXT_FLUSH_CACHE
+ * No additional arguments. Writes back and flushes cache contents.
+ *
+ * cmd: MMUEXT_FLUSH_CACHE_GLOBAL
+ * No additional arguments. Writes back and flushes cache contents
+ * on all CPUs in the system.
+ *
+ * cmd: MMUEXT_SET_LDT
+ * linear_addr: Linear address of LDT base (NB. must be page-aligned).
+ * nr_ents: Number of entries in LDT.
+ *
+ * cmd: MMUEXT_CLEAR_PAGE
+ * mfn: Machine frame number to be cleared.
+ *
+ * cmd: MMUEXT_COPY_PAGE
+ * mfn: Machine frame number of the destination page.
+ * src_mfn: Machine frame number of the source page.
+ *
+ * cmd: MMUEXT_[UN]MARK_SUPER
+ * mfn: Machine frame number of head of superpage to be [un]marked.
+ */
+#define MMUEXT_PIN_L1_TABLE      0
+#define MMUEXT_PIN_L2_TABLE      1
+#define MMUEXT_PIN_L3_TABLE      2
+#define MMUEXT_PIN_L4_TABLE      3
+#define MMUEXT_UNPIN_TABLE       4
+#define MMUEXT_NEW_BASEPTR       5
+#define MMUEXT_TLB_FLUSH_LOCAL   6
+#define MMUEXT_INVLPG_LOCAL      7
+#define MMUEXT_TLB_FLUSH_MULTI   8
+#define MMUEXT_INVLPG_MULTI      9
+#define MMUEXT_TLB_FLUSH_ALL    10
+#define MMUEXT_INVLPG_ALL       11
+#define MMUEXT_FLUSH_CACHE      12
+#define MMUEXT_SET_LDT          13
+#define MMUEXT_NEW_USER_BASEPTR 15
+#define MMUEXT_CLEAR_PAGE       16
+#define MMUEXT_COPY_PAGE        17
+#define MMUEXT_FLUSH_CACHE_GLOBAL 18
+#define MMUEXT_MARK_SUPER       19
+#define MMUEXT_UNMARK_SUPER     20
+
+#ifndef __ASSEMBLY__
+struct mmuext_op {
+	unsigned int cmd;
+	union {
+		/* [UN]PIN_TABLE, NEW_BASEPTR, NEW_USER_BASEPTR
+		 * CLEAR_PAGE, COPY_PAGE, [UN]MARK_SUPER */
+		xen_pfn_t mfn;
+		/* INVLPG_LOCAL, INVLPG_ALL, SET_LDT */
+		unsigned long linear_addr;
+	} arg1;
+	union {
+		/* SET_LDT */
+		unsigned int nr_ents;
+		/* TLB_FLUSH_MULTI, INVLPG_MULTI */
+		void *vcpumask;
+		/* COPY_PAGE */
+		xen_pfn_t src_mfn;
+	} arg2;
+};
+DEFINE_GUEST_HANDLE_STRUCT(mmuext_op);
+#endif
+
+/* These are passed as 'flags' to update_va_mapping. They can be ORed. */
+/* When specifying UVMF_MULTI, also OR in a pointer to a CPU bitmap.   */
+/* UVMF_LOCAL is merely UVMF_MULTI with a NULL bitmap pointer.         */
+#define UVMF_NONE               (0UL<<0) /* No flushing at all.   */
+#define UVMF_TLB_FLUSH          (1UL<<0) /* Flush entire TLB(s).  */
+#define UVMF_INVLPG             (2UL<<0) /* Flush only one entry. */
+#define UVMF_FLUSHTYPE_MASK     (3UL<<0)
+#define UVMF_MULTI              (0UL<<2) /* Flush subset of TLBs. */
+#define UVMF_LOCAL              (0UL<<2) /* Flush local TLB.      */
+#define UVMF_ALL                (1UL<<2) /* Flush all TLBs.       */
+
+/*
+ * Commands to HYPERVISOR_console_io().
+ */
+#define CONSOLEIO_write         0
+#define CONSOLEIO_read          1
+
+/*
+ * Commands to HYPERVISOR_vm_assist().
+ */
+#define VMASST_CMD_enable                0
+#define VMASST_CMD_disable               1
+
+/* x86/32 guests: simulate full 4GB segment limits. */
+#define VMASST_TYPE_4gb_segments         0
+
+/* x86/32 guests: trap (vector 15) whenever above vmassist is used. */
+#define VMASST_TYPE_4gb_segments_notify  1
+
+/*
+ * x86 guests: support writes to bottom-level PTEs.
+ * NB1. Page-directory entries cannot be written.
+ * NB2. Guest must continue to remove all writable mappings of PTEs.
+ */
+#define VMASST_TYPE_writable_pagetables  2
+
+/* x86/PAE guests: support PDPTs above 4GB. */
+#define VMASST_TYPE_pae_extended_cr3     3
+
+#define MAX_VMASST_TYPE 3
+
+#ifndef __ASSEMBLY__
+
+typedef __u16 domid_t;
+
+/* Domain ids >= DOMID_FIRST_RESERVED cannot be used for ordinary domains. */
+#define DOMID_FIRST_RESERVED (0x7FF0U)
+
+/* DOMID_SELF is used in certain contexts to refer to oneself. */
+#define DOMID_SELF (0x7FF0U)
+
+/*
+ * DOMID_IO is used to restrict page-table updates to mapping I/O memory.
+ * Although no Foreign Domain need be specified to map I/O pages, DOMID_IO
+ * is useful to ensure that no mappings to the OS's own heap are accidentally
+ * installed. (e.g., in Linux this could cause havoc as reference counts
+ * aren't adjusted on the I/O-mapping code path).
+ * This only makes sense in MMUEXT_SET_FOREIGNDOM, but in that context can
+ * be specified by any calling domain.
+ */
+#define DOMID_IO   (0x7FF1U)
+
+/*
+ * DOMID_XEN is used to allow privileged domains to map restricted parts of
+ * Xen's heap space (e.g., the machine_to_phys table).
+ * This only makes sense in MMUEXT_SET_FOREIGNDOM, and is only permitted if
+ * the caller is privileged.
+ */
+#define DOMID_XEN  (0x7FF2U)
+
+/* DOMID_COW is used as the owner of sharable pages */
+#define DOMID_COW  (0x7FF3U)
+
+/* DOMID_INVALID is used to identify pages with unknown owner. */
+#define DOMID_INVALID (0x7FF4U)
+
+/* Idle domain. */
+#define DOMID_IDLE (0x7FFFU)
+
+/*
+ * Send an array of these to HYPERVISOR_mmu_update().
+ * NB. The fields are natural pointer/address size for this architecture.
+ */
+struct mmu_update {
+    __u64 ptr;       /* Machine address of PTE. */
+    __u64 val;       /* New contents of PTE.    */
+};
+DEFINE_GUEST_HANDLE_STRUCT(mmu_update);
+
+/*
+ * Send an array of these to HYPERVISOR_multicall().
+ * NB. The fields are logically the natural register size for this
+ * architecture. In cases where xen_ulong_t is larger than this then
+ * any unused bits in the upper portion must be zero.
+ */
+struct multicall_entry {
+    xen_ulong_t op;
+    xen_long_t result;
+    xen_ulong_t args[6];
+};
+DEFINE_GUEST_HANDLE_STRUCT(multicall_entry);
+
+struct vcpu_time_info {
+	/*
+	 * Updates to the following values are preceded and followed
+	 * by an increment of 'version'. The guest can therefore
+	 * detect updates by looking for changes to 'version'. If the
+	 * least-significant bit of the version number is set then an
+	 * update is in progress and the guest must wait to read a
+	 * consistent set of values.  The correct way to interact with
+	 * the version number is similar to Linux's seqlock: see the
+	 * implementations of read_seqbegin/read_seqretry.
+	 */
+	__u32 version;
+	__u32 pad0;
+	__u64 tsc_timestamp;   /* TSC at last update of time vals.  */
+	__u64 system_time;     /* Time, in nanosecs, since boot.    */
+	/*
+	 * Current system time:
+	 *   system_time + ((tsc - tsc_timestamp) << tsc_shift) * tsc_to_system_mul
+	 * CPU frequency (Hz):
+	 *   ((10^9 << 32) / tsc_to_system_mul) >> tsc_shift
+	 */
+	__u32 tsc_to_system_mul;
+	__s8   tsc_shift;
+	__s8   pad1[3];
+}; /* 32 bytes */
+
+struct vcpu_info {
+	/*
+	 * 'evtchn_upcall_pending' is written non-zero by Xen to indicate
+	 * a pending notification for a particular VCPU. It is then cleared
+	 * by the guest OS /before/ checking for pending work, thus avoiding
+	 * a set-and-check race. Note that the mask is only accessed by Xen
+	 * on the CPU that is currently hosting the VCPU. This means that the
+	 * pending and mask flags can be updated by the guest without special
+	 * synchronisation (i.e., no need for the x86 LOCK prefix).
+	 * This may seem suboptimal because if the pending flag is set by
+	 * a different CPU then an IPI may be scheduled even when the mask
+	 * is set. However, note:
+	 *  1. The task of 'interrupt holdoff' is covered by the per-event-
+	 *     channel mask bits. A 'noisy' event that is continually being
+	 *     triggered can be masked at source at this very precise
+	 *     granularity.
+	 *  2. The main purpose of the per-VCPU mask is therefore to restrict
+	 *     reentrant execution: whether for concurrency control, or to
+	 *     prevent unbounded stack usage. Whatever the purpose, we expect
+	 *     that the mask will be asserted only for short periods at a time,
+	 *     and so the likelihood of a 'spurious' IPI is suitably small.
+	 * The mask is read before making an event upcall to the guest: a
+	 * non-zero mask therefore guarantees that the VCPU will not receive
+	 * an upcall activation. The mask is cleared when the VCPU requests
+	 * to block: this avoids wakeup-waiting races.
+	 */
+	__u8 evtchn_upcall_pending;
+	__u8 evtchn_upcall_mask;
+	xen_ulong_t evtchn_pending_sel;
+	struct arch_vcpu_info arch;
+	struct pvclock_vcpu_time_info time;
+}; /* 64 bytes (x86) */
+
+/*
+ * Xen/kernel shared data -- pointer provided in start_info.
+ * NB. We expect that this struct is smaller than a page.
+ */
+struct shared_info {
+	struct vcpu_info vcpu_info[MAX_VIRT_CPUS];
+
+	/*
+	 * A domain can create "event channels" on which it can send and receive
+	 * asynchronous event notifications. There are three classes of event that
+	 * are delivered by this mechanism:
+	 *  1. Bi-directional inter- and intra-domain connections. Domains must
+	 *     arrange out-of-band to set up a connection (usually by allocating
+	 *     an unbound 'listener' port and avertising that via a storage service
+	 *     such as xenstore).
+	 *  2. Physical interrupts. A domain with suitable hardware-access
+	 *     privileges can bind an event-channel port to a physical interrupt
+	 *     source.
+	 *  3. Virtual interrupts ('events'). A domain can bind an event-channel
+	 *     port to a virtual interrupt source, such as the virtual-timer
+	 *     device or the emergency console.
+	 *
+	 * Event channels are addressed by a "port index". Each channel is
+	 * associated with two bits of information:
+	 *  1. PENDING -- notifies the domain that there is a pending notification
+	 *     to be processed. This bit is cleared by the guest.
+	 *  2. MASK -- if this bit is clear then a 0->1 transition of PENDING
+	 *     will cause an asynchronous upcall to be scheduled. This bit is only
+	 *     updated by the guest. It is read-only within Xen. If a channel
+	 *     becomes pending while the channel is masked then the 'edge' is lost
+	 *     (i.e., when the channel is unmasked, the guest must manually handle
+	 *     pending notifications as no upcall will be scheduled by Xen).
+	 *
+	 * To expedite scanning of pending notifications, any 0->1 pending
+	 * transition on an unmasked channel causes a corresponding bit in a
+	 * per-vcpu selector word to be set. Each bit in the selector covers a
+	 * 'C long' in the PENDING bitfield array.
+	 */
+	xen_ulong_t evtchn_pending[sizeof(xen_ulong_t) * 8];
+	xen_ulong_t evtchn_mask[sizeof(xen_ulong_t) * 8];
+
+	/*
+	 * Wallclock time: updated only by control software. Guests should base
+	 * their gettimeofday() syscall on this wallclock-base value.
+	 */
+	struct pvclock_wall_clock wc;
+
+	struct arch_shared_info arch;
+
+};
+
+/*
+ * Start-of-day memory layout for the initial domain (DOM0):
+ *  1. The domain is started within contiguous virtual-memory region.
+ *  2. The contiguous region begins and ends on an aligned 4MB boundary.
+ *  3. The region start corresponds to the load address of the OS image.
+ *     If the load address is not 4MB aligned then the address is rounded down.
+ *  4. This the order of bootstrap elements in the initial virtual region:
+ *      a. relocated kernel image
+ *      b. initial ram disk              [mod_start, mod_len]
+ *      c. list of allocated page frames [mfn_list, nr_pages]
+ *      d. start_info_t structure        [register ESI (x86)]
+ *      e. bootstrap page tables         [pt_base, CR3 (x86)]
+ *      f. bootstrap stack               [register ESP (x86)]
+ *  5. Bootstrap elements are packed together, but each is 4kB-aligned.
+ *  6. The initial ram disk may be omitted.
+ *  7. The list of page frames forms a contiguous 'pseudo-physical' memory
+ *     layout for the domain. In particular, the bootstrap virtual-memory
+ *     region is a 1:1 mapping to the first section of the pseudo-physical map.
+ *  8. All bootstrap elements are mapped read-writable for the guest OS. The
+ *     only exception is the bootstrap page table, which is mapped read-only.
+ *  9. There is guaranteed to be at least 512kB padding after the final
+ *     bootstrap element. If necessary, the bootstrap virtual region is
+ *     extended by an extra 4MB to ensure this.
+ */
+
+#define MAX_GUEST_CMDLINE 1024
+struct start_info {
+	/* THE FOLLOWING ARE FILLED IN BOTH ON INITIAL BOOT AND ON RESUME.    */
+	char magic[32];             /* "xen-<version>-<platform>".            */
+	unsigned long nr_pages;     /* Total pages allocated to this domain.  */
+	unsigned long shared_info;  /* MACHINE address of shared info struct. */
+	__u32 flags;             /* SIF_xxx flags.                         */
+	xen_pfn_t store_mfn;        /* MACHINE page number of shared page.    */
+	__u32 store_evtchn;      /* Event channel for store communication. */
+	union {
+		struct {
+			xen_pfn_t mfn;      /* MACHINE page number of console page.   */
+			__u32  evtchn;   /* Event channel for console page.        */
+		} domU;
+		struct {
+			__u32 info_off;  /* Offset of console_info struct.         */
+			__u32 info_size; /* Size of console_info struct from start.*/
+		} dom0;
+	} console;
+	/* THE FOLLOWING ARE ONLY FILLED IN ON INITIAL BOOT (NOT RESUME).     */
+	unsigned long pt_base;      /* VIRTUAL address of page directory.     */
+	unsigned long nr_pt_frames; /* Number of bootstrap p.t. frames.       */
+	unsigned long mfn_list;     /* VIRTUAL address of page-frame list.    */
+	unsigned long mod_start;    /* VIRTUAL address of pre-loaded module.  */
+	unsigned long mod_len;      /* Size (bytes) of pre-loaded module.     */
+	__s8 cmd_line[MAX_GUEST_CMDLINE];
+	/* The pfn range here covers both page table and p->m table frames.   */
+	unsigned long first_p2m_pfn;/* 1st pfn forming initial P->M table.    */
+	unsigned long nr_p2m_frames;/* # of pfns forming initial P->M table.  */
+};
+
+/* These flags are passed in the 'flags' field of start_info_t. */
+#define SIF_PRIVILEGED    (1<<0)  /* Is the domain privileged? */
+#define SIF_INITDOMAIN    (1<<1)  /* Is this the initial control domain? */
+#define SIF_MULTIBOOT_MOD (1<<2)  /* Is mod_start a multiboot module? */
+#define SIF_MOD_START_PFN (1<<3)  /* Is mod_start a PFN? */
+#define SIF_PM_MASK       (0xFF<<8) /* reserve 1 byte for xen-pm options */
+
+/*
+ * A multiboot module is a package containing modules very similar to a
+ * multiboot module array. The only differences are:
+ * - the array of module descriptors is by convention simply at the beginning
+ *   of the multiboot module,
+ * - addresses in the module descriptors are based on the beginning of the
+ *   multiboot module,
+ * - the number of modules is determined by a termination descriptor that has
+ *   mod_start == 0.
+ *
+ * This permits to both build it statically and reference it in a configuration
+ * file, and let the PV guest easily rebase the addresses to virtual addresses
+ * and at the same time count the number of modules.
+ */
+struct xen_multiboot_mod_list {
+	/* Address of first byte of the module */
+	__u32 mod_start;
+	/* Address of last byte of the module (inclusive) */
+	__u32 mod_end;
+	/* Address of zero-terminated command line */
+	__u32 cmdline;
+	/* Unused, must be zero */
+	__u32 pad;
+};
+/*
+ * The console structure in start_info.console.dom0
+ *
+ * This structure includes a variety of information required to
+ * have a working VGA/VESA console.
+ */
+struct dom0_vga_console_info {
+	__u8 video_type;
+#define XEN_VGATYPE_TEXT_MODE_3 0x03
+#define XEN_VGATYPE_VESA_LFB    0x23
+#define XEN_VGATYPE_EFI_LFB     0x70
+
+	union {
+		struct {
+			/* Font height, in pixels. */
+			__u16 font_height;
+			/* Cursor location (column, row). */
+			__u16 cursor_x, cursor_y;
+			/* Number of rows and columns (dimensions in characters). */
+			__u16 rows, columns;
+		} text_mode_3;
+
+		struct {
+			/* Width and height, in pixels. */
+			__u16 width, height;
+			/* Bytes per scan line. */
+			__u16 bytes_per_line;
+			/* Bits per pixel. */
+			__u16 bits_per_pixel;
+			/* LFB physical address, and size (in units of 64kB). */
+			__u32 lfb_base;
+			__u32 lfb_size;
+			/* RGB mask offsets and sizes, as defined by VBE 1.2+ */
+			__u8  red_pos, red_size;
+			__u8  green_pos, green_size;
+			__u8  blue_pos, blue_size;
+			__u8  rsvd_pos, rsvd_size;
+
+			/* VESA capabilities (offset 0xa, VESA command 0x4f00). */
+			__u32 gbl_caps;
+			/* Mode attributes (offset 0x0, VESA command 0x4f01). */
+			__u16 mode_attrs;
+		} vesa_lfb;
+	} u;
+};
+
+typedef __u64 cpumap_t;
+
+typedef __u8 xen_domain_handle_t[16];
+
+/* Turn a plain number into a C unsigned long constant. */
+#define __mk_unsigned_long(x) x ## UL
+#define mk_unsigned_long(x) __mk_unsigned_long(x)
+
+#define TMEM_SPEC_VERSION 1
+
+struct tmem_op {
+	__u32 cmd;
+	__s32 pool_id;
+	union {
+		struct {  /* for cmd == TMEM_NEW_POOL */
+			__u64 uuid[2];
+			__u32 flags;
+		} new;
+		struct {
+			__u64 oid[3];
+			__u32 index;
+			__u32 tmem_offset;
+			__u32 pfn_offset;
+			__u32 len;
+			GUEST_HANDLE(void) gmfn; /* guest machine page frame */
+		} gen;
+	} u;
+};
+
+DEFINE_GUEST_HANDLE(__u64);
+
+#else /* __ASSEMBLY__ */
+
+/* In assembly code we cannot use C numeric constant suffixes. */
+#define mk_unsigned_long(x) x
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* __LINUX_PUBLIC_XEN_H__ */
diff --git a/include/xen/interface/xen.h b/include/xen/interface/xen.h
index a483789..f69a8de 100644
--- a/include/xen/interface/xen.h
+++ b/include/xen/interface/xen.h
@@ -1,758 +1,6 @@
-/******************************************************************************
- * xen.h
- *
- * Guest OS interface to Xen.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Copyright (c) 2004, K A Fraser
- */
-
 #ifndef __XEN_PUBLIC_XEN_H__
 #define __XEN_PUBLIC_XEN_H__
 
-#include <asm/xen/interface.h>
-
-/*
- * XEN "SYSTEM CALLS" (a.k.a. HYPERCALLS).
- */
-
-/*
- * x86_32: EAX = vector; EBX, ECX, EDX, ESI, EDI = args 1, 2, 3, 4, 5.
- *         EAX = return value
- *         (argument registers may be clobbered on return)
- * x86_64: RAX = vector; RDI, RSI, RDX, R10, R8, R9 = args 1, 2, 3, 4, 5, 6.
- *         RAX = return value
- *         (argument registers not clobbered on return; RCX, R11 are)
- */
-#define __HYPERVISOR_set_trap_table        0
-#define __HYPERVISOR_mmu_update            1
-#define __HYPERVISOR_set_gdt               2
-#define __HYPERVISOR_stack_switch          3
-#define __HYPERVISOR_set_callbacks         4
-#define __HYPERVISOR_fpu_taskswitch        5
-#define __HYPERVISOR_sched_op_compat       6
-#define __HYPERVISOR_dom0_op               7
-#define __HYPERVISOR_set_debugreg          8
-#define __HYPERVISOR_get_debugreg          9
-#define __HYPERVISOR_update_descriptor    10
-#define __HYPERVISOR_memory_op            12
-#define __HYPERVISOR_multicall            13
-#define __HYPERVISOR_update_va_mapping    14
-#define __HYPERVISOR_set_timer_op         15
-#define __HYPERVISOR_event_channel_op_compat 16
-#define __HYPERVISOR_xen_version          17
-#define __HYPERVISOR_console_io           18
-#define __HYPERVISOR_physdev_op_compat    19
-#define __HYPERVISOR_grant_table_op       20
-#define __HYPERVISOR_vm_assist            21
-#define __HYPERVISOR_update_va_mapping_otherdomain 22
-#define __HYPERVISOR_iret                 23 /* x86 only */
-#define __HYPERVISOR_vcpu_op              24
-#define __HYPERVISOR_set_segment_base     25 /* x86/64 only */
-#define __HYPERVISOR_mmuext_op            26
-#define __HYPERVISOR_xsm_op               27
-#define __HYPERVISOR_nmi_op               28
-#define __HYPERVISOR_sched_op             29
-#define __HYPERVISOR_callback_op          30
-#define __HYPERVISOR_xenoprof_op          31
-#define __HYPERVISOR_event_channel_op     32
-#define __HYPERVISOR_physdev_op           33
-#define __HYPERVISOR_hvm_op               34
-#define __HYPERVISOR_sysctl               35
-#define __HYPERVISOR_domctl               36
-#define __HYPERVISOR_kexec_op             37
-#define __HYPERVISOR_tmem_op              38
-#define __HYPERVISOR_xc_reserved_op       39 /* reserved for XenClient */
-
-/* Architecture-specific hypercall definitions. */
-#define __HYPERVISOR_arch_0               48
-#define __HYPERVISOR_arch_1               49
-#define __HYPERVISOR_arch_2               50
-#define __HYPERVISOR_arch_3               51
-#define __HYPERVISOR_arch_4               52
-#define __HYPERVISOR_arch_5               53
-#define __HYPERVISOR_arch_6               54
-#define __HYPERVISOR_arch_7               55
-
-/*
- * VIRTUAL INTERRUPTS
- *
- * Virtual interrupts that a guest OS may receive from Xen.
- * In the side comments, 'V.' denotes a per-VCPU VIRQ while 'G.' denotes a
- * global VIRQ. The former can be bound once per VCPU and cannot be re-bound.
- * The latter can be allocated only once per guest: they must initially be
- * allocated to VCPU0 but can subsequently be re-bound.
- */
-#define VIRQ_TIMER      0  /* V. Timebase update, and/or requested timeout.  */
-#define VIRQ_DEBUG      1  /* V. Request guest to dump debug info.           */
-#define VIRQ_CONSOLE    2  /* G. (DOM0) Bytes received on emergency console. */
-#define VIRQ_DOM_EXC    3  /* G. (DOM0) Exceptional event for some domain.   */
-#define VIRQ_TBUF       4  /* G. (DOM0) Trace buffer has records available.  */
-#define VIRQ_DEBUGGER   6  /* G. (DOM0) A domain has paused for debugging.   */
-#define VIRQ_XENOPROF   7  /* V. XenOprofile interrupt: new sample available */
-#define VIRQ_CON_RING   8  /* G. (DOM0) Bytes received on console            */
-#define VIRQ_PCPU_STATE 9  /* G. (DOM0) PCPU state changed                   */
-#define VIRQ_MEM_EVENT  10 /* G. (DOM0) A memory event has occured           */
-#define VIRQ_XC_RESERVED 11 /* G. Reserved for XenClient                     */
-#define VIRQ_ENOMEM     12 /* G. (DOM0) Low on heap memory       */
-
-/* Architecture-specific VIRQ definitions. */
-#define VIRQ_ARCH_0    16
-#define VIRQ_ARCH_1    17
-#define VIRQ_ARCH_2    18
-#define VIRQ_ARCH_3    19
-#define VIRQ_ARCH_4    20
-#define VIRQ_ARCH_5    21
-#define VIRQ_ARCH_6    22
-#define VIRQ_ARCH_7    23
-
-#define NR_VIRQS       24
-
-/*
- * enum neg_errnoval HYPERVISOR_mmu_update(const struct mmu_update reqs[],
- *                                         unsigned count, unsigned *done_out,
- *                                         unsigned foreigndom)
- * @reqs is an array of mmu_update_t structures ((ptr, val) pairs).
- * @count is the length of the above array.
- * @pdone is an output parameter indicating number of completed operations
- * @foreigndom[15:0]: FD, the expected owner of data pages referenced in this
- *                    hypercall invocation. Can be DOMID_SELF.
- * @foreigndom[31:16]: PFD, the expected owner of pagetable pages referenced
- *                     in this hypercall invocation. The value of this field
- *                     (x) encodes the PFD as follows:
- *                     x == 0 => PFD == DOMID_SELF
- *                     x != 0 => PFD == x - 1
- *
- * Sub-commands: ptr[1:0] specifies the appropriate MMU_* command.
- * -------------
- * ptr[1:0] == MMU_NORMAL_PT_UPDATE:
- * Updates an entry in a page table belonging to PFD. If updating an L1 table,
- * and the new table entry is valid/present, the mapped frame must belong to
- * FD. If attempting to map an I/O page then the caller assumes the privilege
- * of the FD.
- * FD == DOMID_IO: Permit /only/ I/O mappings, at the priv level of the caller.
- * FD == DOMID_XEN: Map restricted areas of Xen's heap space.
- * ptr[:2]  -- Machine address of the page-table entry to modify.
- * val      -- Value to write.
- *
- * There also certain implicit requirements when using this hypercall. The
- * pages that make up a pagetable must be mapped read-only in the guest.
- * This prevents uncontrolled guest updates to the pagetable. Xen strictly
- * enforces this, and will disallow any pagetable update which will end up
- * mapping pagetable page RW, and will disallow using any writable page as a
- * pagetable. In practice it means that when constructing a page table for a
- * process, thread, etc, we MUST be very dilligient in following these rules:
- *  1). Start with top-level page (PGD or in Xen language: L4). Fill out
- *      the entries.
- *  2). Keep on going, filling out the upper (PUD or L3), and middle (PMD
- *      or L2).
- *  3). Start filling out the PTE table (L1) with the PTE entries. Once
- *      done, make sure to set each of those entries to RO (so writeable bit
- *      is unset). Once that has been completed, set the PMD (L2) for this
- *      PTE table as RO.
- *  4). When completed with all of the PMD (L2) entries, and all of them have
- *      been set to RO, make sure to set RO the PUD (L3). Do the same
- *      operation on PGD (L4) pagetable entries that have a PUD (L3) entry.
- *  5). Now before you can use those pages (so setting the cr3), you MUST also
- *      pin them so that the hypervisor can verify the entries. This is done
- *      via the HYPERVISOR_mmuext_op(MMUEXT_PIN_L4_TABLE, guest physical frame
- *      number of the PGD (L4)). And this point the HYPERVISOR_mmuext_op(
- *      MMUEXT_NEW_BASEPTR, guest physical frame number of the PGD (L4)) can be
- *      issued.
- * For 32-bit guests, the L4 is not used (as there is less pagetables), so
- * instead use L3.
- * At this point the pagetables can be modified using the MMU_NORMAL_PT_UPDATE
- * hypercall. Also if so desired the OS can also try to write to the PTE
- * and be trapped by the hypervisor (as the PTE entry is RO).
- *
- * To deallocate the pages, the operations are the reverse of the steps
- * mentioned above. The argument is MMUEXT_UNPIN_TABLE for all levels and the
- * pagetable MUST not be in use (meaning that the cr3 is not set to it).
- *
- * ptr[1:0] == MMU_MACHPHYS_UPDATE:
- * Updates an entry in the machine->pseudo-physical mapping table.
- * ptr[:2]  -- Machine address within the frame whose mapping to modify.
- *             The frame must belong to the FD, if one is specified.
- * val      -- Value to write into the mapping entry.
- *
- * ptr[1:0] == MMU_PT_UPDATE_PRESERVE_AD:
- * As MMU_NORMAL_PT_UPDATE above, but A/D bits currently in the PTE are ORed
- * with those in @val.
- *
- * @val is usually the machine frame number along with some attributes.
- * The attributes by default follow the architecture defined bits. Meaning that
- * if this is a X86_64 machine and four page table layout is used, the layout
- * of val is:
- *  - 63 if set means No execute (NX)
- *  - 46-13 the machine frame number
- *  - 12 available for guest
- *  - 11 available for guest
- *  - 10 available for guest
- *  - 9 available for guest
- *  - 8 global
- *  - 7 PAT (PSE is disabled, must use hypercall to make 4MB or 2MB pages)
- *  - 6 dirty
- *  - 5 accessed
- *  - 4 page cached disabled
- *  - 3 page write through
- *  - 2 userspace accessible
- *  - 1 writeable
- *  - 0 present
- *
- *  The one bits that does not fit with the default layout is the PAGE_PSE
- *  also called PAGE_PAT). The MMUEXT_[UN]MARK_SUPER arguments to the
- *  HYPERVISOR_mmuext_op serve as mechanism to set a pagetable to be 4MB
- *  (or 2MB) instead of using the PAGE_PSE bit.
- *
- *  The reason that the PAGE_PSE (bit 7) is not being utilized is due to Xen
- *  using it as the Page Attribute Table (PAT) bit - for details on it please
- *  refer to Intel SDM 10.12. The PAT allows to set the caching attributes of
- *  pages instead of using MTRRs.
- *
- *  The PAT MSR is as follows (it is a 64-bit value, each entry is 8 bits):
- *                    PAT4                 PAT0
- *  +-----+-----+----+----+----+-----+----+----+
- *  | UC  | UC- | WC | WB | UC | UC- | WC | WB |  <= Linux
- *  +-----+-----+----+----+----+-----+----+----+
- *  | UC  | UC- | WT | WB | UC | UC- | WT | WB |  <= BIOS (default when machine boots)
- *  +-----+-----+----+----+----+-----+----+----+
- *  | rsv | rsv | WP | WC | UC | UC- | WT | WB |  <= Xen
- *  +-----+-----+----+----+----+-----+----+----+
- *
- *  The lookup of this index table translates to looking up
- *  Bit 7, Bit 4, and Bit 3 of val entry:
- *
- *  PAT/PSE (bit 7) ... PCD (bit 4) .. PWT (bit 3).
- *
- *  If all bits are off, then we are using PAT0. If bit 3 turned on,
- *  then we are using PAT1, if bit 3 and bit 4, then PAT2..
- *
- *  As you can see, the Linux PAT1 translates to PAT4 under Xen. Which means
- *  that if a guest that follows Linux's PAT setup and would like to set Write
- *  Combined on pages it MUST use PAT4 entry. Meaning that Bit 7 (PAGE_PAT) is
- *  set. For example, under Linux it only uses PAT0, PAT1, and PAT2 for the
- *  caching as:
- *
- *   WB = none (so PAT0)
- *   WC = PWT (bit 3 on)
- *   UC = PWT | PCD (bit 3 and 4 are on).
- *
- * To make it work with Xen, it needs to translate the WC bit as so:
- *
- *  PWT (so bit 3 on) --> PAT (so bit 7 is on) and clear bit 3
- *
- * And to translate back it would:
- *
- * PAT (bit 7 on) --> PWT (bit 3 on) and clear bit 7.
- */
-#define MMU_NORMAL_PT_UPDATE      0 /* checked '*ptr = val'. ptr is MA.       */
-#define MMU_MACHPHYS_UPDATE       1 /* ptr = MA of frame to modify entry for  */
-#define MMU_PT_UPDATE_PRESERVE_AD 2 /* atomically: *ptr = val | (*ptr&(A|D)) */
-
-/*
- * MMU EXTENDED OPERATIONS
- *
- * enum neg_errnoval HYPERVISOR_mmuext_op(mmuext_op_t uops[],
- *                                        unsigned int count,
- *                                        unsigned int *pdone,
- *                                        unsigned int foreigndom)
- */
-/* HYPERVISOR_mmuext_op() accepts a list of mmuext_op structures.
- * A foreigndom (FD) can be specified (or DOMID_SELF for none).
- * Where the FD has some effect, it is described below.
- *
- * cmd: MMUEXT_(UN)PIN_*_TABLE
- * mfn: Machine frame number to be (un)pinned as a p.t. page.
- *      The frame must belong to the FD, if one is specified.
- *
- * cmd: MMUEXT_NEW_BASEPTR
- * mfn: Machine frame number of new page-table base to install in MMU.
- *
- * cmd: MMUEXT_NEW_USER_BASEPTR [x86/64 only]
- * mfn: Machine frame number of new page-table base to install in MMU
- *      when in user space.
- *
- * cmd: MMUEXT_TLB_FLUSH_LOCAL
- * No additional arguments. Flushes local TLB.
- *
- * cmd: MMUEXT_INVLPG_LOCAL
- * linear_addr: Linear address to be flushed from the local TLB.
- *
- * cmd: MMUEXT_TLB_FLUSH_MULTI
- * vcpumask: Pointer to bitmap of VCPUs to be flushed.
- *
- * cmd: MMUEXT_INVLPG_MULTI
- * linear_addr: Linear address to be flushed.
- * vcpumask: Pointer to bitmap of VCPUs to be flushed.
- *
- * cmd: MMUEXT_TLB_FLUSH_ALL
- * No additional arguments. Flushes all VCPUs' TLBs.
- *
- * cmd: MMUEXT_INVLPG_ALL
- * linear_addr: Linear address to be flushed from all VCPUs' TLBs.
- *
- * cmd: MMUEXT_FLUSH_CACHE
- * No additional arguments. Writes back and flushes cache contents.
- *
- * cmd: MMUEXT_FLUSH_CACHE_GLOBAL
- * No additional arguments. Writes back and flushes cache contents
- * on all CPUs in the system.
- *
- * cmd: MMUEXT_SET_LDT
- * linear_addr: Linear address of LDT base (NB. must be page-aligned).
- * nr_ents: Number of entries in LDT.
- *
- * cmd: MMUEXT_CLEAR_PAGE
- * mfn: Machine frame number to be cleared.
- *
- * cmd: MMUEXT_COPY_PAGE
- * mfn: Machine frame number of the destination page.
- * src_mfn: Machine frame number of the source page.
- *
- * cmd: MMUEXT_[UN]MARK_SUPER
- * mfn: Machine frame number of head of superpage to be [un]marked.
- */
-#define MMUEXT_PIN_L1_TABLE      0
-#define MMUEXT_PIN_L2_TABLE      1
-#define MMUEXT_PIN_L3_TABLE      2
-#define MMUEXT_PIN_L4_TABLE      3
-#define MMUEXT_UNPIN_TABLE       4
-#define MMUEXT_NEW_BASEPTR       5
-#define MMUEXT_TLB_FLUSH_LOCAL   6
-#define MMUEXT_INVLPG_LOCAL      7
-#define MMUEXT_TLB_FLUSH_MULTI   8
-#define MMUEXT_INVLPG_MULTI      9
-#define MMUEXT_TLB_FLUSH_ALL    10
-#define MMUEXT_INVLPG_ALL       11
-#define MMUEXT_FLUSH_CACHE      12
-#define MMUEXT_SET_LDT          13
-#define MMUEXT_NEW_USER_BASEPTR 15
-#define MMUEXT_CLEAR_PAGE       16
-#define MMUEXT_COPY_PAGE        17
-#define MMUEXT_FLUSH_CACHE_GLOBAL 18
-#define MMUEXT_MARK_SUPER       19
-#define MMUEXT_UNMARK_SUPER     20
-
-#ifndef __ASSEMBLY__
-struct mmuext_op {
-	unsigned int cmd;
-	union {
-		/* [UN]PIN_TABLE, NEW_BASEPTR, NEW_USER_BASEPTR
-		 * CLEAR_PAGE, COPY_PAGE, [UN]MARK_SUPER */
-		xen_pfn_t mfn;
-		/* INVLPG_LOCAL, INVLPG_ALL, SET_LDT */
-		unsigned long linear_addr;
-	} arg1;
-	union {
-		/* SET_LDT */
-		unsigned int nr_ents;
-		/* TLB_FLUSH_MULTI, INVLPG_MULTI */
-		void *vcpumask;
-		/* COPY_PAGE */
-		xen_pfn_t src_mfn;
-	} arg2;
-};
-DEFINE_GUEST_HANDLE_STRUCT(mmuext_op);
-#endif
-
-/* These are passed as 'flags' to update_va_mapping. They can be ORed. */
-/* When specifying UVMF_MULTI, also OR in a pointer to a CPU bitmap.   */
-/* UVMF_LOCAL is merely UVMF_MULTI with a NULL bitmap pointer.         */
-#define UVMF_NONE               (0UL<<0) /* No flushing at all.   */
-#define UVMF_TLB_FLUSH          (1UL<<0) /* Flush entire TLB(s).  */
-#define UVMF_INVLPG             (2UL<<0) /* Flush only one entry. */
-#define UVMF_FLUSHTYPE_MASK     (3UL<<0)
-#define UVMF_MULTI              (0UL<<2) /* Flush subset of TLBs. */
-#define UVMF_LOCAL              (0UL<<2) /* Flush local TLB.      */
-#define UVMF_ALL                (1UL<<2) /* Flush all TLBs.       */
-
-/*
- * Commands to HYPERVISOR_console_io().
- */
-#define CONSOLEIO_write         0
-#define CONSOLEIO_read          1
-
-/*
- * Commands to HYPERVISOR_vm_assist().
- */
-#define VMASST_CMD_enable                0
-#define VMASST_CMD_disable               1
-
-/* x86/32 guests: simulate full 4GB segment limits. */
-#define VMASST_TYPE_4gb_segments         0
-
-/* x86/32 guests: trap (vector 15) whenever above vmassist is used. */
-#define VMASST_TYPE_4gb_segments_notify  1
-
-/*
- * x86 guests: support writes to bottom-level PTEs.
- * NB1. Page-directory entries cannot be written.
- * NB2. Guest must continue to remove all writable mappings of PTEs.
- */
-#define VMASST_TYPE_writable_pagetables  2
-
-/* x86/PAE guests: support PDPTs above 4GB. */
-#define VMASST_TYPE_pae_extended_cr3     3
-
-#define MAX_VMASST_TYPE 3
-
-#ifndef __ASSEMBLY__
-
-typedef uint16_t domid_t;
-
-/* Domain ids >= DOMID_FIRST_RESERVED cannot be used for ordinary domains. */
-#define DOMID_FIRST_RESERVED (0x7FF0U)
-
-/* DOMID_SELF is used in certain contexts to refer to oneself. */
-#define DOMID_SELF (0x7FF0U)
-
-/*
- * DOMID_IO is used to restrict page-table updates to mapping I/O memory.
- * Although no Foreign Domain need be specified to map I/O pages, DOMID_IO
- * is useful to ensure that no mappings to the OS's own heap are accidentally
- * installed. (e.g., in Linux this could cause havoc as reference counts
- * aren't adjusted on the I/O-mapping code path).
- * This only makes sense in MMUEXT_SET_FOREIGNDOM, but in that context can
- * be specified by any calling domain.
- */
-#define DOMID_IO   (0x7FF1U)
-
-/*
- * DOMID_XEN is used to allow privileged domains to map restricted parts of
- * Xen's heap space (e.g., the machine_to_phys table).
- * This only makes sense in MMUEXT_SET_FOREIGNDOM, and is only permitted if
- * the caller is privileged.
- */
-#define DOMID_XEN  (0x7FF2U)
-
-/* DOMID_COW is used as the owner of sharable pages */
-#define DOMID_COW  (0x7FF3U)
-
-/* DOMID_INVALID is used to identify pages with unknown owner. */
-#define DOMID_INVALID (0x7FF4U)
-
-/* Idle domain. */
-#define DOMID_IDLE (0x7FFFU)
-
-/*
- * Send an array of these to HYPERVISOR_mmu_update().
- * NB. The fields are natural pointer/address size for this architecture.
- */
-struct mmu_update {
-    uint64_t ptr;       /* Machine address of PTE. */
-    uint64_t val;       /* New contents of PTE.    */
-};
-DEFINE_GUEST_HANDLE_STRUCT(mmu_update);
-
-/*
- * Send an array of these to HYPERVISOR_multicall().
- * NB. The fields are logically the natural register size for this
- * architecture. In cases where xen_ulong_t is larger than this then
- * any unused bits in the upper portion must be zero.
- */
-struct multicall_entry {
-    xen_ulong_t op;
-    xen_long_t result;
-    xen_ulong_t args[6];
-};
-DEFINE_GUEST_HANDLE_STRUCT(multicall_entry);
-
-struct vcpu_time_info {
-	/*
-	 * Updates to the following values are preceded and followed
-	 * by an increment of 'version'. The guest can therefore
-	 * detect updates by looking for changes to 'version'. If the
-	 * least-significant bit of the version number is set then an
-	 * update is in progress and the guest must wait to read a
-	 * consistent set of values.  The correct way to interact with
-	 * the version number is similar to Linux's seqlock: see the
-	 * implementations of read_seqbegin/read_seqretry.
-	 */
-	uint32_t version;
-	uint32_t pad0;
-	uint64_t tsc_timestamp;   /* TSC at last update of time vals.  */
-	uint64_t system_time;     /* Time, in nanosecs, since boot.    */
-	/*
-	 * Current system time:
-	 *   system_time + ((tsc - tsc_timestamp) << tsc_shift) * tsc_to_system_mul
-	 * CPU frequency (Hz):
-	 *   ((10^9 << 32) / tsc_to_system_mul) >> tsc_shift
-	 */
-	uint32_t tsc_to_system_mul;
-	int8_t   tsc_shift;
-	int8_t   pad1[3];
-}; /* 32 bytes */
-
-struct vcpu_info {
-	/*
-	 * 'evtchn_upcall_pending' is written non-zero by Xen to indicate
-	 * a pending notification for a particular VCPU. It is then cleared
-	 * by the guest OS /before/ checking for pending work, thus avoiding
-	 * a set-and-check race. Note that the mask is only accessed by Xen
-	 * on the CPU that is currently hosting the VCPU. This means that the
-	 * pending and mask flags can be updated by the guest without special
-	 * synchronisation (i.e., no need for the x86 LOCK prefix).
-	 * This may seem suboptimal because if the pending flag is set by
-	 * a different CPU then an IPI may be scheduled even when the mask
-	 * is set. However, note:
-	 *  1. The task of 'interrupt holdoff' is covered by the per-event-
-	 *     channel mask bits. A 'noisy' event that is continually being
-	 *     triggered can be masked at source at this very precise
-	 *     granularity.
-	 *  2. The main purpose of the per-VCPU mask is therefore to restrict
-	 *     reentrant execution: whether for concurrency control, or to
-	 *     prevent unbounded stack usage. Whatever the purpose, we expect
-	 *     that the mask will be asserted only for short periods at a time,
-	 *     and so the likelihood of a 'spurious' IPI is suitably small.
-	 * The mask is read before making an event upcall to the guest: a
-	 * non-zero mask therefore guarantees that the VCPU will not receive
-	 * an upcall activation. The mask is cleared when the VCPU requests
-	 * to block: this avoids wakeup-waiting races.
-	 */
-	uint8_t evtchn_upcall_pending;
-	uint8_t evtchn_upcall_mask;
-	xen_ulong_t evtchn_pending_sel;
-	struct arch_vcpu_info arch;
-	struct pvclock_vcpu_time_info time;
-}; /* 64 bytes (x86) */
-
-/*
- * Xen/kernel shared data -- pointer provided in start_info.
- * NB. We expect that this struct is smaller than a page.
- */
-struct shared_info {
-	struct vcpu_info vcpu_info[MAX_VIRT_CPUS];
-
-	/*
-	 * A domain can create "event channels" on which it can send and receive
-	 * asynchronous event notifications. There are three classes of event that
-	 * are delivered by this mechanism:
-	 *  1. Bi-directional inter- and intra-domain connections. Domains must
-	 *     arrange out-of-band to set up a connection (usually by allocating
-	 *     an unbound 'listener' port and avertising that via a storage service
-	 *     such as xenstore).
-	 *  2. Physical interrupts. A domain with suitable hardware-access
-	 *     privileges can bind an event-channel port to a physical interrupt
-	 *     source.
-	 *  3. Virtual interrupts ('events'). A domain can bind an event-channel
-	 *     port to a virtual interrupt source, such as the virtual-timer
-	 *     device or the emergency console.
-	 *
-	 * Event channels are addressed by a "port index". Each channel is
-	 * associated with two bits of information:
-	 *  1. PENDING -- notifies the domain that there is a pending notification
-	 *     to be processed. This bit is cleared by the guest.
-	 *  2. MASK -- if this bit is clear then a 0->1 transition of PENDING
-	 *     will cause an asynchronous upcall to be scheduled. This bit is only
-	 *     updated by the guest. It is read-only within Xen. If a channel
-	 *     becomes pending while the channel is masked then the 'edge' is lost
-	 *     (i.e., when the channel is unmasked, the guest must manually handle
-	 *     pending notifications as no upcall will be scheduled by Xen).
-	 *
-	 * To expedite scanning of pending notifications, any 0->1 pending
-	 * transition on an unmasked channel causes a corresponding bit in a
-	 * per-vcpu selector word to be set. Each bit in the selector covers a
-	 * 'C long' in the PENDING bitfield array.
-	 */
-	xen_ulong_t evtchn_pending[sizeof(xen_ulong_t) * 8];
-	xen_ulong_t evtchn_mask[sizeof(xen_ulong_t) * 8];
-
-	/*
-	 * Wallclock time: updated only by control software. Guests should base
-	 * their gettimeofday() syscall on this wallclock-base value.
-	 */
-	struct pvclock_wall_clock wc;
-
-	struct arch_shared_info arch;
-
-};
-
-/*
- * Start-of-day memory layout for the initial domain (DOM0):
- *  1. The domain is started within contiguous virtual-memory region.
- *  2. The contiguous region begins and ends on an aligned 4MB boundary.
- *  3. The region start corresponds to the load address of the OS image.
- *     If the load address is not 4MB aligned then the address is rounded down.
- *  4. This the order of bootstrap elements in the initial virtual region:
- *      a. relocated kernel image
- *      b. initial ram disk              [mod_start, mod_len]
- *      c. list of allocated page frames [mfn_list, nr_pages]
- *      d. start_info_t structure        [register ESI (x86)]
- *      e. bootstrap page tables         [pt_base, CR3 (x86)]
- *      f. bootstrap stack               [register ESP (x86)]
- *  5. Bootstrap elements are packed together, but each is 4kB-aligned.
- *  6. The initial ram disk may be omitted.
- *  7. The list of page frames forms a contiguous 'pseudo-physical' memory
- *     layout for the domain. In particular, the bootstrap virtual-memory
- *     region is a 1:1 mapping to the first section of the pseudo-physical map.
- *  8. All bootstrap elements are mapped read-writable for the guest OS. The
- *     only exception is the bootstrap page table, which is mapped read-only.
- *  9. There is guaranteed to be at least 512kB padding after the final
- *     bootstrap element. If necessary, the bootstrap virtual region is
- *     extended by an extra 4MB to ensure this.
- */
-
-#define MAX_GUEST_CMDLINE 1024
-struct start_info {
-	/* THE FOLLOWING ARE FILLED IN BOTH ON INITIAL BOOT AND ON RESUME.    */
-	char magic[32];             /* "xen-<version>-<platform>".            */
-	unsigned long nr_pages;     /* Total pages allocated to this domain.  */
-	unsigned long shared_info;  /* MACHINE address of shared info struct. */
-	uint32_t flags;             /* SIF_xxx flags.                         */
-	xen_pfn_t store_mfn;        /* MACHINE page number of shared page.    */
-	uint32_t store_evtchn;      /* Event channel for store communication. */
-	union {
-		struct {
-			xen_pfn_t mfn;      /* MACHINE page number of console page.   */
-			uint32_t  evtchn;   /* Event channel for console page.        */
-		} domU;
-		struct {
-			uint32_t info_off;  /* Offset of console_info struct.         */
-			uint32_t info_size; /* Size of console_info struct from start.*/
-		} dom0;
-	} console;
-	/* THE FOLLOWING ARE ONLY FILLED IN ON INITIAL BOOT (NOT RESUME).     */
-	unsigned long pt_base;      /* VIRTUAL address of page directory.     */
-	unsigned long nr_pt_frames; /* Number of bootstrap p.t. frames.       */
-	unsigned long mfn_list;     /* VIRTUAL address of page-frame list.    */
-	unsigned long mod_start;    /* VIRTUAL address of pre-loaded module.  */
-	unsigned long mod_len;      /* Size (bytes) of pre-loaded module.     */
-	int8_t cmd_line[MAX_GUEST_CMDLINE];
-	/* The pfn range here covers both page table and p->m table frames.   */
-	unsigned long first_p2m_pfn;/* 1st pfn forming initial P->M table.    */
-	unsigned long nr_p2m_frames;/* # of pfns forming initial P->M table.  */
-};
-
-/* These flags are passed in the 'flags' field of start_info_t. */
-#define SIF_PRIVILEGED    (1<<0)  /* Is the domain privileged? */
-#define SIF_INITDOMAIN    (1<<1)  /* Is this the initial control domain? */
-#define SIF_MULTIBOOT_MOD (1<<2)  /* Is mod_start a multiboot module? */
-#define SIF_MOD_START_PFN (1<<3)  /* Is mod_start a PFN? */
-#define SIF_PM_MASK       (0xFF<<8) /* reserve 1 byte for xen-pm options */
-
-/*
- * A multiboot module is a package containing modules very similar to a
- * multiboot module array. The only differences are:
- * - the array of module descriptors is by convention simply at the beginning
- *   of the multiboot module,
- * - addresses in the module descriptors are based on the beginning of the
- *   multiboot module,
- * - the number of modules is determined by a termination descriptor that has
- *   mod_start == 0.
- *
- * This permits to both build it statically and reference it in a configuration
- * file, and let the PV guest easily rebase the addresses to virtual addresses
- * and at the same time count the number of modules.
- */
-struct xen_multiboot_mod_list {
-	/* Address of first byte of the module */
-	uint32_t mod_start;
-	/* Address of last byte of the module (inclusive) */
-	uint32_t mod_end;
-	/* Address of zero-terminated command line */
-	uint32_t cmdline;
-	/* Unused, must be zero */
-	uint32_t pad;
-};
-/*
- * The console structure in start_info.console.dom0
- *
- * This structure includes a variety of information required to
- * have a working VGA/VESA console.
- */
-struct dom0_vga_console_info {
-	uint8_t video_type;
-#define XEN_VGATYPE_TEXT_MODE_3 0x03
-#define XEN_VGATYPE_VESA_LFB    0x23
-#define XEN_VGATYPE_EFI_LFB     0x70
-
-	union {
-		struct {
-			/* Font height, in pixels. */
-			uint16_t font_height;
-			/* Cursor location (column, row). */
-			uint16_t cursor_x, cursor_y;
-			/* Number of rows and columns (dimensions in characters). */
-			uint16_t rows, columns;
-		} text_mode_3;
-
-		struct {
-			/* Width and height, in pixels. */
-			uint16_t width, height;
-			/* Bytes per scan line. */
-			uint16_t bytes_per_line;
-			/* Bits per pixel. */
-			uint16_t bits_per_pixel;
-			/* LFB physical address, and size (in units of 64kB). */
-			uint32_t lfb_base;
-			uint32_t lfb_size;
-			/* RGB mask offsets and sizes, as defined by VBE 1.2+ */
-			uint8_t  red_pos, red_size;
-			uint8_t  green_pos, green_size;
-			uint8_t  blue_pos, blue_size;
-			uint8_t  rsvd_pos, rsvd_size;
-
-			/* VESA capabilities (offset 0xa, VESA command 0x4f00). */
-			uint32_t gbl_caps;
-			/* Mode attributes (offset 0x0, VESA command 0x4f01). */
-			uint16_t mode_attrs;
-		} vesa_lfb;
-	} u;
-};
-
-typedef uint64_t cpumap_t;
-
-typedef uint8_t xen_domain_handle_t[16];
-
-/* Turn a plain number into a C unsigned long constant. */
-#define __mk_unsigned_long(x) x ## UL
-#define mk_unsigned_long(x) __mk_unsigned_long(x)
-
-#define TMEM_SPEC_VERSION 1
-
-struct tmem_op {
-	uint32_t cmd;
-	int32_t pool_id;
-	union {
-		struct {  /* for cmd == TMEM_NEW_POOL */
-			uint64_t uuid[2];
-			uint32_t flags;
-		} new;
-		struct {
-			uint64_t oid[3];
-			uint32_t index;
-			uint32_t tmem_offset;
-			uint32_t pfn_offset;
-			uint32_t len;
-			GUEST_HANDLE(void) gmfn; /* guest machine page frame */
-		} gen;
-	} u;
-};
-
-DEFINE_GUEST_HANDLE(u64);
-
-#else /* __ASSEMBLY__ */
-
-/* In assembly code we cannot use C numeric constant suffixes. */
-#define mk_unsigned_long(x) x
-
-#endif /* !__ASSEMBLY__ */
+#include <uapi/xen/interface/xen.h>
 
 #endif /* __XEN_PUBLIC_XEN_H__ */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 96/98] HACK include/uapi/linux/coda_psdev.h: fix compilation in userspace
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (94 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 95/98] HACK: fix include/uapi/xen/privcmd.h compilation in userspace Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-05-31 11:19   ` Jan Harkes
  2015-05-30 15:39 ` [PATCH 97/98] HACK include/uapi/linux/elfcore.h: use __kernel_pid_t and remove elf_greg_t stuff " Mikko Rapeli
                   ` (2 subsequent siblings)
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, Jan Harkes, coda, codalist, linux-api

Include linux/coda.h for caddr_t and use unsigned short type directly.
Userspace headers do not have list_head and wait_queue_head_t so just
ifdef them away which is a HACK. Any ideas how to fix this properly?

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/coda_psdev.h | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/include/uapi/linux/coda_psdev.h b/include/uapi/linux/coda_psdev.h
index 79d0598..50e49f8 100644
--- a/include/uapi/linux/coda_psdev.h
+++ b/include/uapi/linux/coda_psdev.h
@@ -2,6 +2,7 @@
 #define _UAPI__CODA_PSDEV_H
 
 #include <linux/magic.h>
+#include <linux/coda.h>
 
 #define CODA_PSDEV_MAJOR 67
 #define MAX_CODADEVS  5	   /* how many do we allow */
@@ -9,14 +10,18 @@
 
 /* messages between coda filesystem in kernel and Venus */
 struct upc_req {
+#ifdef __KERNEL__
 	struct list_head    uc_chain;
+#endif /* __KERNEL__ */
 	caddr_t	            uc_data;
-	u_short	            uc_flags;
-	u_short             uc_inSize;  /* Size is at most 5000 bytes */
-	u_short	            uc_outSize;
-	u_short	            uc_opcode;  /* copied from data to save lookup */
+	unsigned short      uc_flags;
+	unsigned short      uc_inSize;  /* Size is at most 5000 bytes */
+	unsigned short	    uc_outSize;
+	unsigned short      uc_opcode;  /* copied from data to save lookup */
 	int		    uc_unique;
+#ifdef __KERNEL__
 	wait_queue_head_t   uc_sleep;   /* process' wait queue */
+#endif /* __KERNEL__ */
 };
 
 #define CODA_REQ_ASYNC  0x1
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 97/98] HACK include/uapi/linux/elfcore.h: use __kernel_pid_t and remove elf_greg_t stuff in userspace
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (95 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 96/98] HACK include/uapi/linux/coda_psdev.h: fix " Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-10-06 19:20   ` Mikko Rapeli
  2015-05-30 15:39 ` [PATCH 98/98] HACK include/uapi/linux/errqueue.h: include time.h " Mikko Rapeli
  2015-05-30 20:12 ` [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Richard Weinberger
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, linux-api

__kernel_pid_t change feels like right one. Commenting out elf_greg_t
things in userspace does not but exporting x86/include/asm/elf.h and its
dependencies to userspace does not feel right either. Hence HACK.

Fixes userspace compilation errors like:

error: unknown type name ‘elf_greg_t’
 typedef elf_greg_t greg_t;
error: unknown type name ‘pid_t’
  pid_t pr_pid;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/elfcore.h | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/include/uapi/linux/elfcore.h b/include/uapi/linux/elfcore.h
index 569737c..b9d1233 100644
--- a/include/uapi/linux/elfcore.h
+++ b/include/uapi/linux/elfcore.h
@@ -17,11 +17,13 @@ struct elf_siginfo
 
 
 #ifndef __KERNEL__
+#if 0
 typedef elf_greg_t greg_t;
 typedef elf_gregset_t gregset_t;
 typedef elf_fpregset_t fpregset_t;
 typedef elf_fpxregset_t fpxregset_t;
 #define NGREG ELF_NGREG
+#endif /* 0 */
 #endif
 
 /*
@@ -48,10 +50,10 @@ struct elf_prstatus
 	struct sigaltstack pr_altstack;	/* Alternate stack info */
 	struct sigaction pr_action;	/* Signal action for current sig */
 #endif
-	pid_t	pr_pid;
-	pid_t	pr_ppid;
-	pid_t	pr_pgrp;
-	pid_t	pr_sid;
+	__kernel_pid_t	pr_pid;
+	__kernel_pid_t	pr_ppid;
+	__kernel_pid_t	pr_pgrp;
+	__kernel_pid_t	pr_sid;
 	struct timeval pr_utime;	/* User time */
 	struct timeval pr_stime;	/* System time */
 	struct timeval pr_cutime;	/* Cumulative user time */
@@ -59,7 +61,9 @@ struct elf_prstatus
 #if 0
 	long	pr_instr;		/* Current instruction */
 #endif
+#ifdef __KERNEL__
 	elf_gregset_t pr_reg;	/* GP registers */
+#endif /* __KERNEL__ */
 #ifdef CONFIG_BINFMT_ELF_FDPIC
 	/* When using FDPIC, the loadmap addresses need to be communicated
 	 * to GDB in order for GDB to do the necessary relocations.  The
@@ -84,7 +88,7 @@ struct elf_prpsinfo
 	unsigned long pr_flag;	/* flags */
 	__kernel_uid_t	pr_uid;
 	__kernel_gid_t	pr_gid;
-	pid_t	pr_pid, pr_ppid, pr_pgrp, pr_sid;
+	__kernel_pid_t	pr_pid, pr_ppid, pr_pgrp, pr_sid;
 	/* Lots missing */
 	char	pr_fname[16];	/* filename of executable */
 	char	pr_psargs[ELF_PRARGSZ];	/* initial part of arg list */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* [PATCH 98/98] HACK include/uapi/linux/errqueue.h: include time.h in userspace
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (96 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 97/98] HACK include/uapi/linux/elfcore.h: use __kernel_pid_t and remove elf_greg_t stuff " Mikko Rapeli
@ 2015-05-30 15:39 ` Mikko Rapeli
  2015-10-06 19:56   ` Mikko Rapeli
  2015-05-30 20:12 ` [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Richard Weinberger
  98 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-30 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikko Rapeli, David S. Miller, Willem de Bruijn, linux-api

linux/time.h conflicts with userspace header time.h. Try to be compatible
for kernel and userspace.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/errqueue.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/include/uapi/linux/errqueue.h b/include/uapi/linux/errqueue.h
index 6b1cdc6..b310b2c 100644
--- a/include/uapi/linux/errqueue.h
+++ b/include/uapi/linux/errqueue.h
@@ -2,7 +2,12 @@
 #define _UAPI_LINUX_ERRQUEUE_H
 
 #include <linux/types.h>
+
+#ifdef __KERNEL__
 #include <linux/time.h>
+#else
+#include <time.h>
+#endif /* __KERNEL__ */
 
 struct sock_extended_err {
 	__u32	ee_errno;	
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* Re: [PATCH 05/98] exynos_drm.h: use __u64 from linux/types.h
  2015-05-30 15:37 ` [PATCH 05/98] exynos_drm.h: use " Mikko Rapeli
@ 2015-05-30 16:46   ` Russell King - ARM Linux
  2015-06-01  8:20     ` Christian König
  2015-06-02 18:59     ` Mikko Rapeli
  0 siblings, 2 replies; 143+ messages in thread
From: Russell King - ARM Linux @ 2015-05-30 16:46 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: linux-kernel, Krzysztof Kozlowski, linux-samsung-soc,
	Joonyoung Shim, David Airlie, Seung-Woo Kim, dri-devel, Inki Dae,
	Kyungmin Park, Kukjin Kim, linux-api, linux-arm-kernel

On Sat, May 30, 2015 at 05:37:57PM +0200, Mikko Rapeli wrote:
> Fixes userspace compilation error:
> 
> drm/exynos_drm.h:30:2: error: unknown type name ‘uint64_t’
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>

This is another thing which we need to address.  We should not be using
unsigned int/unsigned long/uintXX_t/etc in here, but the __uXX and __sXX
types.

The lesson learned from other DRM developers is that using these types
simplifies the API especially when it comes to the differences between
32-bit and 64-bit machines, and compat applications.

Note that drm/drm.h is all that should need to be included - drm/drm.h
takes care of including linux/types.h when building on Linux platforms.
(note: if your compiler doesn't set __linux__ then you're probably not
using the proper compiler...)

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [Xen-devel] [PATCH 95/98] HACK: fix include/uapi/xen/privcmd.h compilation in userspace
  2015-05-30 15:39 ` [PATCH 95/98] HACK: fix include/uapi/xen/privcmd.h compilation in userspace Mikko Rapeli
@ 2015-05-30 17:56   ` Andrew Cooper
  2015-09-10 19:46     ` Mikko Rapeli
  0 siblings, 1 reply; 143+ messages in thread
From: Andrew Cooper @ 2015-05-30 17:56 UTC (permalink / raw)
  To: Mikko Rapeli, linux-kernel
  Cc: Juergen Gross, Alexander Yarygin, x86, Arnaldo Carvalho de Melo,
	Christian Borntraeger, Ingo Molnar, David Vrabel, H. Peter Anvin,
	Cornelia Huck, xen-devel, Thomas Gleixner, linux-api,
	Boris Ostrovsky

On 30/05/15 16:39, Mikko Rapeli wrote:
> privcmd.h depends on xen/interface/xen.h which is now exported to userspace.
> xen/interface/xen.h then depends on asm/xen/interface.h which is now
> exported to userspace together with its dependencies asm/xen/interface_32.h,
> asm/xen/interface_64.h and asm/pvclock-abi.h on x86 architecture.
>
> Then all of these headers were fixed to use __u8 etc from linux/types.h
> instead of custom types.
>
> Then define uint64_t and uint32_t if needed.
>
> After all these changes these header files now compile in userspace too
> on x86.
>
> HACK since I have no idea if this is correct way to fix this.
>
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>

Historical reasons expect xen/interface/xen.h to be a verbatim copy of
the master version kept in the Xen repository.

The only things privcmd.h need from interface/xen.h are domid_t
(uint16_t), and xen_pfn_t (unsigned long, or uint64_t in arm32 iirc),
while the majority of the rest absolutely shouldn't be in Linux’s uapi.

It would probably be best to provide just these two types and nuke the
"#include <xen/interface/xen.h>".  Any user of privcmd needs to include
the Xen interface themselves anyway, and will have a different copy
which includes the toolstack half of the interface (missing from the
kernel copy) which is the useful set of definitions for driving the
privcmd ioctl()s.

~Andrew

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 49/98] Break dependency loop between linux/if.h and linux/hdlc/ioctl.h
  2015-05-30 15:38 ` [PATCH 49/98] Break dependency loop between linux/if.h and linux/hdlc/ioctl.h Mikko Rapeli
@ 2015-05-30 19:52   ` Frans Klaver
  0 siblings, 0 replies; 143+ messages in thread
From: Frans Klaver @ 2015-05-30 19:52 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, linux-api

On Sat, May 30, 2015 at 05:38:41PM +0200, Mikko Rapeli wrote:
> This isn't pretty but does the job. I assume including plain linux/hdlc/ioctl.h
> without linux/if.h is much more rare than the other way round, and that
> these header file names are part of API, and that creating a new header file
> just for IFNAMSIZ isn't a good idea either.
> 
> Fixes userspace compiler error:
> 
> error: ‘IFNAMSIZ’ undeclared here (not in a function)
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/linux/hdlc/ioctl.h | 5 ++++-
>  include/uapi/linux/if.h         | 4 ++++
>  2 files changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/include/uapi/linux/hdlc/ioctl.h b/include/uapi/linux/hdlc/ioctl.h
> index 8bbee11..73982ec 100644
> --- a/include/uapi/linux/hdlc/ioctl.h
> +++ b/include/uapi/linux/hdlc/ioctl.h
> @@ -1,7 +1,10 @@
>  #ifndef __HDLC_IOCTL_H__
>  #define __HDLC_IOCTL_H__
>  
> -#include <linux/if.h>
> +/* For breaking dependency loop between if.h and hdlc/ioctl.h */
> +#ifndef IFNAMSIZ
> +#define IFNAMSIZ        16
> +#endif
>  
>  #define GENERIC_HDLC_VERSION 4	/* For synchronization with sethdlc utility */
>  
> diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
> index 9cf2394..e4b130a 100644
> --- a/include/uapi/linux/if.h
> +++ b/include/uapi/linux/if.h
> @@ -23,6 +23,10 @@
>  #include <linux/socket.h>		/* for "struct sockaddr" et al	*/
>  #include <linux/compiler.h>		/* for "__user" et al           */
>  
> +/**
> + * IFNAMSIZ is also defined in linux/hdlc/ioctl.h if it does not exists
> + * to break dependency loop between linux/if.h and linux/hdlc/ioctl.h.
> + */
>  #define	IFNAMSIZ	16
>  #define	IFALIASZ	256
>  #include <linux/hdlc/ioctl.h>

This feels backwards to me. Wouldn't it be less funky to accept that
IFNAMSIZE isn't defined in if.h, but rather in hdlc/ioctl.h? If now
someone feels giddy and does

#include <linux/hdlc/ioctl.h>
#include <linux/if.h>

We have a new and unnecessary warning on our hands ;-)

Thanks,
Frans

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 04/98] drm_mode.h: use __u32 and __u64 from linux/types.h
  2015-05-30 15:37 ` [PATCH 04/98] drm_mode.h: use __u32 and __u64 from linux/types.h Mikko Rapeli
@ 2015-05-30 19:58   ` Frans Klaver
  0 siblings, 0 replies; 143+ messages in thread
From: Frans Klaver @ 2015-05-30 19:58 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, David Airlie, dri-devel, linux-api

On Sat, May 30, 2015 at 05:37:56PM +0200, Mikko Rapeli wrote:
> Fixes userspace compilation error:
> 
> drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’

It's even more or less required by the coding style. Chapter 5
(typedefs) says:

 (e) Types safe for use in userspace.

     In certain structures which are visible to userspace, we cannot
     require C99 types and cannot use the 'u32' form above. Thus, we
     use __u32 and similar types in all structures which are shared
     with userspace.

So this is probably an improvement in any case.

Thanks,
Frans

> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/drm/drm_mode.h | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> index dbeba94..03e4d75 100644
> --- a/include/uapi/drm/drm_mode.h
> +++ b/include/uapi/drm/drm_mode.h
> @@ -508,14 +508,14 @@ struct drm_mode_crtc_page_flip {
>  
>  /* create a dumb scanout buffer */
>  struct drm_mode_create_dumb {
> -	uint32_t height;
> -	uint32_t width;
> -	uint32_t bpp;
> -	uint32_t flags;
> +	__u32 height;
> +	__u32 width;
> +	__u32 bpp;
> +	__u32 flags;
>  	/* handle, pitch, size will be returned */
> -	uint32_t handle;
> -	uint32_t pitch;
> -	uint64_t size;
> +	__u32 handle;
> +	__u32 pitch;
> +	__u64 size;
>  };
>  
>  /* set up for mmap of a dumb scanout buffer */
> @@ -532,7 +532,7 @@ struct drm_mode_map_dumb {
>  };
>  
>  struct drm_mode_destroy_dumb {
> -	uint32_t handle;
> +	__u32 handle;
>  };
>  
>  /* page-flip flags are valid, plus: */
> -- 
> 2.1.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files
  2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (97 preceding siblings ...)
  2015-05-30 15:39 ` [PATCH 98/98] HACK include/uapi/linux/errqueue.h: include time.h " Mikko Rapeli
@ 2015-05-30 20:12 ` Richard Weinberger
  2015-05-31  4:05   ` Mikko Rapeli
  98 siblings, 1 reply; 143+ messages in thread
From: Richard Weinberger @ 2015-05-30 20:12 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: LKML

On Sat, May 30, 2015 at 5:37 PM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> v3:
> tried to fix all v2 review findings
> tried to guess how to fix a few more issue
> with a few hacks, 0 files fail and 760 files pass the compile test on 32bit x86
>
> v2:
> https://lkml.org/lkml/2015/2/16/521
> added cross compiler support with CROSS_COMPILE,
> detecting libc and GCC headers from compiler,
> more header file fixes
>
> v1:
> https://lkml.org/lkml/2014/8/21/665
>
> Users of kernel header files would be happier if they did not contain
> kernel specific parts and would contain #include statements for all
> other header files that they depend on, and in general would compile.

Maybe this is a stupid question, but does that mean that many of our uapi
headers never worked as expected and don't build at all?

-- 
Thanks,
//richard

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 29/98] scsi_netlink_fc.h: include stdint.h in userspace
  2015-05-30 15:38 ` [PATCH 29/98] scsi_netlink_fc.h: include stdint.h in userspace Mikko Rapeli
@ 2015-05-30 20:17   ` Frans Klaver
  2015-06-02 19:14     ` Mikko Rapeli
  0 siblings, 1 reply; 143+ messages in thread
From: Frans Klaver @ 2015-05-30 20:17 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, linux-api

On Sat, May 30, 2015 at 05:38:21PM +0200, Mikko Rapeli wrote:
> Fixes compilation error:
> 
> scsi/scsi_netlink_fc.h:60:2: error: expected specifier-qualifier-list before ‘uint64_t’
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/scsi/scsi_netlink_fc.h | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/include/uapi/scsi/scsi_netlink_fc.h b/include/uapi/scsi/scsi_netlink_fc.h
> index 2493a0f..b857e34 100644
> --- a/include/uapi/scsi/scsi_netlink_fc.h
> +++ b/include/uapi/scsi/scsi_netlink_fc.h
> @@ -21,6 +21,11 @@
>  #ifndef SCSI_NETLINK_FC_H
>  #define SCSI_NETLINK_FC_H
>  
> +#ifdef __KERNEL__
> +#include <linux/types.h>
> +#else
> +#include <stdint.h>
> +#endif
>  #include <scsi/scsi_netlink.h>
>  
>  /*

Shouldn't we be using __u64 and __u16 in this header instead?

Frans

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 43/98] include/uapi/linux/hdlc/ioctl.h: include linux/if.h
  2015-05-30 15:38 ` [PATCH 43/98] include/uapi/linux/hdlc/ioctl.h: include linux/if.h Mikko Rapeli
@ 2015-05-30 20:22   ` Frans Klaver
  2015-06-02 19:34     ` Mikko Rapeli
  0 siblings, 1 reply; 143+ messages in thread
From: Frans Klaver @ 2015-05-30 20:22 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, linux-api

On Sat, May 30, 2015 at 05:38:35PM +0200, Mikko Rapeli wrote:
> Fixes userspace compiler error:
> 
> error: ‘IFNAMSIZ’ undeclared here (not in a function)
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/linux/hdlc/ioctl.h | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/include/uapi/linux/hdlc/ioctl.h b/include/uapi/linux/hdlc/ioctl.h
> index 04bc027..8bbee11 100644
> --- a/include/uapi/linux/hdlc/ioctl.h
> +++ b/include/uapi/linux/hdlc/ioctl.h
> @@ -1,6 +1,7 @@
>  #ifndef __HDLC_IOCTL_H__
>  #define __HDLC_IOCTL_H__
>  
> +#include <linux/if.h>
>  
>  #define GENERIC_HDLC_VERSION 4	/* For synchronization with sethdlc utility */

What's the point of this one if you break this circular dependency in
patch 49? Are those in between related?

Thanks,
Frans

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files
  2015-05-30 20:12 ` [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Richard Weinberger
@ 2015-05-31  4:05   ` Mikko Rapeli
  0 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-05-31  4:05 UTC (permalink / raw)
  To: Richard Weinberger; +Cc: LKML

On Sat, May 30, 2015 at 10:12:48PM +0200, Richard Weinberger wrote:
> On Sat, May 30, 2015 at 5:37 PM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> > v3:
> > tried to fix all v2 review findings
> > tried to guess how to fix a few more issue
> > with a few hacks, 0 files fail and 760 files pass the compile test on 32bit x86
> >
> > v2:
> > https://lkml.org/lkml/2015/2/16/521
> > added cross compiler support with CROSS_COMPILE,
> > detecting libc and GCC headers from compiler,
> > more header file fixes
> >
> > v1:
> > https://lkml.org/lkml/2014/8/21/665
> >
> > Users of kernel header files would be happier if they did not contain
> > kernel specific parts and would contain #include statements for all
> > other header files that they depend on, and in general would compile.
> 
> Maybe this is a stupid question, but does that mean that many of our uapi
> headers never worked as expected and don't build at all?

Yes. Many uapi headers do not compile in userspace and users of those
headers need to either copy stuff out or do other tricks when including
them. See patch nr 0002 for stats, or https://lkml.org/lkml/2015/5/30/98

-Mikko

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 30/98] hdspm.h: use __u8, __u32 and __u64 from linux/types.h
  2015-05-30 15:38 ` [PATCH 30/98] hdspm.h: use __u8, __u32 and __u64 from linux/types.h Mikko Rapeli
@ 2015-05-31  7:11   ` Takashi Iwai
  2015-06-02 19:18     ` Mikko Rapeli
  0 siblings, 1 reply; 143+ messages in thread
From: Takashi Iwai @ 2015-05-31  7:11 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, Jaroslav Kysela, alsa-devel, linux-api

At Sat, 30 May 2015 17:38:22 +0200,
Mikko Rapeli wrote:
> 
> Fixes userspace compilation errors like:
> 
> sound/hdspm.h:43:2: error: unknown type name ‘uint32_t’

Hmm, how do you get this error at all?
The header includes stdint.h for user-space.


thanks,

Takashi

> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/sound/hdspm.h | 40 ++++++++++++++++++----------------------
>  1 file changed, 18 insertions(+), 22 deletions(-)
> 
> diff --git a/include/uapi/sound/hdspm.h b/include/uapi/sound/hdspm.h
> index 5737332..c4db6f5 100644
> --- a/include/uapi/sound/hdspm.h
> +++ b/include/uapi/sound/hdspm.h
> @@ -20,11 +20,7 @@
>   *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
>   */
>  
> -#ifdef __KERNEL__
>  #include <linux/types.h>
> -#else
> -#include <stdint.h>
> -#endif
>  
>  /* Maximum channels is 64 even on 56Mode you have 64playbacks to matrix */
>  #define HDSPM_MAX_CHANNELS      64
> @@ -46,15 +42,15 @@ enum hdspm_speed {
>  /* -------------------- IOCTL Peak/RMS Meters -------------------- */
>  
>  struct hdspm_peak_rms {
> -	uint32_t input_peaks[64];
> -	uint32_t playback_peaks[64];
> -	uint32_t output_peaks[64];
> +	__u32 input_peaks[64];
> +	__u32 playback_peaks[64];
> +	__u32 output_peaks[64];
>  
> -	uint64_t input_rms[64];
> -	uint64_t playback_rms[64];
> -	uint64_t output_rms[64];
> +	__u64 input_rms[64];
> +	__u64 playback_rms[64];
> +	__u64 output_rms[64];
>  
> -	uint8_t speed; /* enum {ss, ds, qs} */
> +	__u8 speed; /* enum {ss, ds, qs} */
>  	int status2;
>  };
>  
> @@ -155,21 +151,21 @@ enum hdspm_syncsource {
>  };
>  
>  struct hdspm_status {
> -	uint8_t card_type; /* enum hdspm_io_type */
> +	__u8 card_type; /* enum hdspm_io_type */
>  	enum hdspm_syncsource autosync_source;
>  
> -	uint64_t card_clock;
> -	uint32_t master_period;
> +	__u64 card_clock;
> +	__u32 master_period;
>  
>  	union {
>  		struct {
> -			uint8_t sync_wc; /* enum hdspm_sync */
> -			uint8_t sync_madi; /* enum hdspm_sync */
> -			uint8_t sync_tco; /* enum hdspm_sync */
> -			uint8_t sync_in; /* enum hdspm_sync */
> -			uint8_t madi_input; /* enum hdspm_madi_input */
> -			uint8_t channel_format; /* enum hdspm_madi_channel_format */
> -			uint8_t frame_format; /* enum hdspm_madi_frame_format */
> +			__u8 sync_wc; /* enum hdspm_sync */
> +			__u8 sync_madi; /* enum hdspm_sync */
> +			__u8 sync_tco; /* enum hdspm_sync */
> +			__u8 sync_in; /* enum hdspm_sync */
> +			__u8 madi_input; /* enum hdspm_madi_input */
> +			__u8 channel_format; /* enum hdspm_madi_channel_format */
> +			__u8 frame_format; /* enum hdspm_madi_frame_format */
>  		} madi;
>  	} card_specific;
>  };
> @@ -184,7 +180,7 @@ struct hdspm_status {
>  #define HDSPM_ADDON_TCO 1
>  
>  struct hdspm_version {
> -	uint8_t card_type; /* enum hdspm_io_type */
> +	__u8 card_type; /* enum hdspm_io_type */
>  	char cardname[20];
>  	unsigned int serial;
>  	unsigned short firmware_rev;
> -- 
> 2.1.4
> 

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 18/98] include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP etc macros
  2015-05-30 15:38 ` [PATCH 18/98] include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP etc macros Mikko Rapeli
@ 2015-05-31  7:18   ` Takashi Iwai
  2015-05-31  8:12     ` Takashi Iwai
  0 siblings, 1 reply; 143+ messages in thread
From: Takashi Iwai @ 2015-05-31  7:18 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, Jaroslav Kysela, alsa-devel, linux-api

At Sat, 30 May 2015 17:38:10 +0200,
Mikko Rapeli wrote:
> 
> Fixes userspace compilation error:
> 
> error: expected specifier-qualifier-list before ‘DECLARE_BITMAP’
>   DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
> 
> DECLARE_BITMAP etc macros are not meant for userspace headers and thus
> added here as private copies for emu10k.h.
> 
> Fix was suggested by Arnd Bergmann <arnd@arndb.de> in message
> <2168807.4Yxh5gl11Q@wuerfel> on lkml.
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/sound/emu10k1.h | 23 ++++++++++++++++++++---
>  1 file changed, 20 insertions(+), 3 deletions(-)
> 
> diff --git a/include/uapi/sound/emu10k1.h b/include/uapi/sound/emu10k1.h
> index ec1535b..7575f0f 100644
> --- a/include/uapi/sound/emu10k1.h
> +++ b/include/uapi/sound/emu10k1.h
> @@ -34,6 +34,23 @@
>  
>  #define EMU10K1_FX8010_PCM_COUNT		8
>  
> +/*
> + * Following definitions are copies from kernel headers to support compiling
> + * this header file in userspace. The definitions are not generally available
> + * in uapi headers so the needed things are copied here wtih __EMU10k1 prefix.
> + */
> +
> +/* From include/linux/bitops.h */
> +#define __EMU10K1_BITS_PER_BYTE           8
> +/* From include/linux/kernel.h */
> +#define __EMU10K1_DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
> +/* From include/linux/bitops.h */
> +#define __EMU10K1_BITS_TO_LONGS(nr) \
> +        __EMU10K1_DIV_ROUND_UP(nr, __EMU10K1_BITS_PER_BYTE * sizeof(long))
> +/* From include/linux/types.h */
> +#define __EMU10K1_DECLARE_BITMAP(name,bits) \
> +        unsigned long name[__EMU10K1_BITS_TO_LONGS(bits)]

This is way too complicated just for a few expansion of the aligned
size arrays, IMO.  Rather simplify it like below with a comment:

/* the array must be aligned to unsigned long (i.e. 4 or 8 bytes) */
#define __EMU10K1_DECLARE_BITMAP(name) \
	unsigned long name[(bits) / sizeof(unsigned long)]
	
or expand as is at each place like:
	unsigned long gpr_valid[0x200 / sizeof(unsigned long)];


thanks,

Takashi

>  /* instruction set */
>  #define iMAC0	 0x00	/* R = A + (X * Y >> 31)   ; saturation */
>  #define iMAC1	 0x01	/* R = A + (-X * Y >> 31)  ; saturation */
> @@ -300,7 +317,7 @@ struct snd_emu10k1_fx8010_control_old_gpr {
>  struct snd_emu10k1_fx8010_code {
>  	char name[128];
>  
> -	DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
> +	__EMU10K1_DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
>  	__u32 __user *gpr_map;		/* initializers */
>  
>  	unsigned int gpr_add_control_count; /* count of GPR controls to add/replace */
> @@ -313,11 +330,11 @@ struct snd_emu10k1_fx8010_code {
>  	unsigned int gpr_list_control_total; /* total count of GPR controls */
>  	struct snd_emu10k1_fx8010_control_gpr __user *gpr_list_controls; /* listed GPR controls */
>  
> -	DECLARE_BITMAP(tram_valid, 0x100); /* bitmask of valid initializers */
> +	__EMU10K1_DECLARE_BITMAP(tram_valid, 0x100); /* bitmask of valid initializers */
>  	__u32 __user *tram_data_map;	  /* data initializers */
>  	__u32 __user *tram_addr_map;	  /* map initializers */
>  
> -	DECLARE_BITMAP(code_valid, 1024); /* bitmask of valid instructions */
> +	__EMU10K1_DECLARE_BITMAP(code_valid, 1024); /* bitmask of valid instructions */
>  	__u32 __user *code;		  /* one instruction - 64 bits */
>  };
>  
> -- 
> 2.1.4
> 

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 18/98] include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP etc macros
  2015-05-31  7:18   ` Takashi Iwai
@ 2015-05-31  8:12     ` Takashi Iwai
  2015-06-02 19:08       ` Mikko Rapeli
  0 siblings, 1 reply; 143+ messages in thread
From: Takashi Iwai @ 2015-05-31  8:12 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, Jaroslav Kysela, alsa-devel, linux-api

At Sun, 31 May 2015 09:18:57 +0200,
Takashi Iwai wrote:
> 
> At Sat, 30 May 2015 17:38:10 +0200,
> Mikko Rapeli wrote:
> > 
> > Fixes userspace compilation error:
> > 
> > error: expected specifier-qualifier-list before ‘DECLARE_BITMAP’
> >   DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
> > 
> > DECLARE_BITMAP etc macros are not meant for userspace headers and thus
> > added here as private copies for emu10k.h.
> > 
> > Fix was suggested by Arnd Bergmann <arnd@arndb.de> in message
> > <2168807.4Yxh5gl11Q@wuerfel> on lkml.
> > 
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> > ---
> >  include/uapi/sound/emu10k1.h | 23 ++++++++++++++++++++---
> >  1 file changed, 20 insertions(+), 3 deletions(-)
> > 
> > diff --git a/include/uapi/sound/emu10k1.h b/include/uapi/sound/emu10k1.h
> > index ec1535b..7575f0f 100644
> > --- a/include/uapi/sound/emu10k1.h
> > +++ b/include/uapi/sound/emu10k1.h
> > @@ -34,6 +34,23 @@
> >  
> >  #define EMU10K1_FX8010_PCM_COUNT		8
> >  
> > +/*
> > + * Following definitions are copies from kernel headers to support compiling
> > + * this header file in userspace. The definitions are not generally available
> > + * in uapi headers so the needed things are copied here wtih __EMU10k1 prefix.
> > + */
> > +
> > +/* From include/linux/bitops.h */
> > +#define __EMU10K1_BITS_PER_BYTE           8
> > +/* From include/linux/kernel.h */
> > +#define __EMU10K1_DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
> > +/* From include/linux/bitops.h */
> > +#define __EMU10K1_BITS_TO_LONGS(nr) \
> > +        __EMU10K1_DIV_ROUND_UP(nr, __EMU10K1_BITS_PER_BYTE * sizeof(long))
> > +/* From include/linux/types.h */
> > +#define __EMU10K1_DECLARE_BITMAP(name,bits) \
> > +        unsigned long name[__EMU10K1_BITS_TO_LONGS(bits)]
> 
> This is way too complicated just for a few expansion of the aligned
> size arrays, IMO.  Rather simplify it like below with a comment:
> 
> /* the array must be aligned to unsigned long (i.e. 4 or 8 bytes) */
> #define __EMU10K1_DECLARE_BITMAP(name) \
> 	unsigned long name[(bits) / sizeof(unsigned long)]

Crap, of course, it must be multiplied with 8.

/* the array must be aligned to unsigned long (i.e. 32 or 64) */
#define __EMU10K1_DECLARE_BITMAP(name) \
	unsigned long name[(bits) / (sizeof(unsigned long) * 8)]


Takashi

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 96/98] HACK include/uapi/linux/coda_psdev.h: fix compilation in userspace
  2015-05-30 15:39 ` [PATCH 96/98] HACK include/uapi/linux/coda_psdev.h: fix " Mikko Rapeli
@ 2015-05-31 11:19   ` Jan Harkes
  2015-09-10 19:48     ` Mikko Rapeli
  0 siblings, 1 reply; 143+ messages in thread
From: Jan Harkes @ 2015-05-31 11:19 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, linux-api

On Sat, May 30, 2015 at 05:39:28PM +0200, Mikko Rapeli wrote:
> Include linux/coda.h for caddr_t and use unsigned short type directly.
> Userspace headers do not have list_head and wait_queue_head_t so just
> ifdef them away which is a HACK. Any ideas how to fix this properly?

I grepped the Coda userspace sources and it doesn't look like this
particular struct is used there anyway, it is only used by the kernel
module to track which requests are waiting to be read by the Coda
userspace application and after that which requests are waiting for a
response.

I guess a proper fix would be to move this struct to a non-uapi header,
or maybe even to the (probably) only C file in the kernel where it is
used.

Jan


^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 67/98] include/uapi/linux/netfilter/ipset/ip_set_bitmap.h: include linux/netfilter/ipset/ip_set.h
  2015-05-30 15:38 ` [PATCH 67/98] include/uapi/linux/netfilter/ipset/ip_set_bitmap.h: include linux/netfilter/ipset/ip_set.h Mikko Rapeli
@ 2015-05-31 18:15   ` Jozsef Kadlecsik
  2015-06-02 19:42     ` Mikko Rapeli
  0 siblings, 1 reply; 143+ messages in thread
From: Jozsef Kadlecsik @ 2015-05-31 18:15 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: linux-kernel, Pablo Neira Ayuso, Patrick McHardy,
	netfilter-devel, coreteam, linux-api

On Sat, 30 May 2015, Mikko Rapeli wrote:

> Fixes userspace compilation error:
> 
> error: ?IPSET_ERR_TYPE_SPECIFIC? undeclared here (not in a function)
>   IPSET_ERR_BITMAP_RANGE = IPSET_ERR_TYPE_SPECIFIC,

What kind of userspace compilation generates the error message above? How 
can one reproduce it?

Best regards,
Jozsef
 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/linux/netfilter/ipset/ip_set_bitmap.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h b/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h
> index 6a2c038..fd5024d 100644
> --- a/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h
> +++ b/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h
> @@ -1,6 +1,8 @@
>  #ifndef _UAPI__IP_SET_BITMAP_H
>  #define _UAPI__IP_SET_BITMAP_H
>  
> +#include <linux/netfilter/ipset/ip_set.h>
> +
>  /* Bitmap type specific error codes */
>  enum {
>  	/* The element is out of the range of the set */
> -- 
> 2.1.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

-
E-mail  : kadlec@blackhole.kfki.hu, kadlecsik.jozsef@wigner.mta.hu
PGP key : http://www.kfki.hu/~kadlec/pgp_public_key.txt
Address : Wigner Research Centre for Physics, Hungarian Academy of Sciences
          H-1525 Budapest 114, POB. 49, Hungary

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 05/98] exynos_drm.h: use __u64 from linux/types.h
  2015-05-30 16:46   ` Russell King - ARM Linux
@ 2015-06-01  8:20     ` Christian König
  2015-06-01  8:56       ` Russell King - ARM Linux
  2015-06-01  9:15       ` Mikko Rapeli
  2015-06-02 18:59     ` Mikko Rapeli
  1 sibling, 2 replies; 143+ messages in thread
From: Christian König @ 2015-06-01  8:20 UTC (permalink / raw)
  To: Russell King - ARM Linux, Mikko Rapeli
  Cc: Krzysztof Kozlowski, linux-samsung-soc, linux-api, Seung-Woo Kim,
	linux-kernel, dri-devel, Kyungmin Park, Kukjin Kim,
	linux-arm-kernel

On 30.05.2015 18:46, Russell King - ARM Linux wrote:
> On Sat, May 30, 2015 at 05:37:57PM +0200, Mikko Rapeli wrote:
>> Fixes userspace compilation error:
>>
>> drm/exynos_drm.h:30:2: error: unknown type name ‘uint64_t’
>>
>> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> This is another thing which we need to address.  We should not be using
> unsigned int/unsigned long/uintXX_t/etc in here, but the __uXX and __sXX
> types.
>
> The lesson learned from other DRM developers is that using these types
> simplifies the API especially when it comes to the differences between
> 32-bit and 64-bit machines, and compat applications.
>
> Note that drm/drm.h is all that should need to be included - drm/drm.h
> takes care of including linux/types.h when building on Linux platforms.
> (note: if your compiler doesn't set __linux__ then you're probably not
> using the proper compiler...)
>

Using types that differs on 32-bit and 64-bit machines for a kernel 
interface is indeed a rather bad idea. This not only includes longs, but 
pointers as well.

But the int8_t, int16_t int32_t, int64_t and their unsigned counterparts 
are defined in stdint.h which is part of the ISO/IEC 9899:1999 standard, 
similar is true for size_t.

The __uXX, __sXX and _kernel_size_t types are linux specific as far as I 
know.

For best interoperability and standard conformance I think that 
definitions from the C standard we use should out-rule linux specific 
definitions.

Additional to that "linux/types.h" is not part of the uapi as far as I 
know, so including it in a header which is part of the uapi should be 
forbidden.

So this is a NAK from my side for the whole series, userspace programs 
should include <stdint.h> for the definition of the ISO/IEC 9899:1999 
standard types if necessary.

Regards,
Christian.

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 05/98] exynos_drm.h: use __u64 from linux/types.h
  2015-06-01  8:20     ` Christian König
@ 2015-06-01  8:56       ` Russell King - ARM Linux
  2015-06-01  9:08         ` Christian König
  2015-06-01  9:15       ` Mikko Rapeli
  1 sibling, 1 reply; 143+ messages in thread
From: Russell King - ARM Linux @ 2015-06-01  8:56 UTC (permalink / raw)
  To: Christian König
  Cc: Mikko Rapeli, Krzysztof Kozlowski, linux-samsung-soc, linux-api,
	Seung-Woo Kim, linux-kernel, dri-devel, Kyungmin Park,
	Kukjin Kim, linux-arm-kernel

On Mon, Jun 01, 2015 at 10:20:10AM +0200, Christian König wrote:
> Using types that differs on 32-bit and 64-bit machines for a kernel
> interface is indeed a rather bad idea. This not only includes longs, but
> pointers as well.

[cut standard stdint.h types argument which we've heard before]

You need to read Linus' rant on this subject:

 From: Linus Torvalds <torvalds@osdl.org>
 Subject: Re: [RFC] Splitting kernel headers and deprecating __KERNEL__
 Date: Mon, 29 Nov 2004 01:30:46 GMT

 Ok, this discussion has gone on for too long anyway, but let's make it
 easier for everybody. The kernel uses u8/u16/u32 because:

         - the kernel should not depend on, or pollute user-space naming.
           YOU MUST NOT USE "uint32_t" when that may not be defined, and
           user-space rules for when it is defined are arcane and totally
           arbitrary.

         - since the kernel cannot use those types for anything that is
           visible to user space anyway, there has to be alternate names.
           The tradition is to prepend two underscores, so the kernel would
           have to use "__uint32_t" etc for its header files.

         - at that point, there's no longer any valid argument that it's a
           "standard type" (it ain't), and I personally find it a lot more
           readable to just use the types that the kernel has always used:
           __u8/__u16/__u32. For stuff that is only used for the kernel,
           the shorter "u8/u16/u32" versions may be used.

 In short: having the kernel use the same names as user space is ACTIVELY
 BAD, exactly because those names have standards-defined visibility, which
 means that the kernel _cannot_ use them in all places anyway. So don't
 even _try_.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 05/98] exynos_drm.h: use __u64 from linux/types.h
  2015-06-01  8:56       ` Russell King - ARM Linux
@ 2015-06-01  9:08         ` Christian König
  2015-06-01  9:14           ` Frans Klaver
  2015-06-01  9:38           ` Russell King - ARM Linux
  0 siblings, 2 replies; 143+ messages in thread
From: Christian König @ 2015-06-01  9:08 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: Mikko Rapeli, Krzysztof Kozlowski, linux-samsung-soc, linux-api,
	Seung-Woo Kim, linux-kernel, dri-devel, Kyungmin Park,
	Kukjin Kim, linux-arm-kernel

Yeah, completely agree with Linus on the visibility problem and that's 
exactly the reason why we don't include <stdint.h> in the kernel header 
and expect userspace to define the ISO types somewhere.

But using the types from "include/linux/types.h" and especially 
including it into the uapi headers doesn't make the situation better, 
but rather worse.

With this step we not only make the headers depend on another header 
that isn't part of the uapi, but also pollute the user space namespace 
with __sXX and __uXX types which aren't defined anywhere else.

Regards,
Christian.

On 01.06.2015 10:56, Russell King - ARM Linux wrote:
> On Mon, Jun 01, 2015 at 10:20:10AM +0200, Christian König wrote:
>> Using types that differs on 32-bit and 64-bit machines for a kernel
>> interface is indeed a rather bad idea. This not only includes longs, but
>> pointers as well.
> [cut standard stdint.h types argument which we've heard before]
>
> You need to read Linus' rant on this subject:
>
>   From: Linus Torvalds <torvalds@osdl.org>
>   Subject: Re: [RFC] Splitting kernel headers and deprecating __KERNEL__
>   Date: Mon, 29 Nov 2004 01:30:46 GMT
>
>   Ok, this discussion has gone on for too long anyway, but let's make it
>   easier for everybody. The kernel uses u8/u16/u32 because:
>
>           - the kernel should not depend on, or pollute user-space naming.
>             YOU MUST NOT USE "uint32_t" when that may not be defined, and
>             user-space rules for when it is defined are arcane and totally
>             arbitrary.
>
>           - since the kernel cannot use those types for anything that is
>             visible to user space anyway, there has to be alternate names.
>             The tradition is to prepend two underscores, so the kernel would
>             have to use "__uint32_t" etc for its header files.
>
>           - at that point, there's no longer any valid argument that it's a
>             "standard type" (it ain't), and I personally find it a lot more
>             readable to just use the types that the kernel has always used:
>             __u8/__u16/__u32. For stuff that is only used for the kernel,
>             the shorter "u8/u16/u32" versions may be used.
>
>   In short: having the kernel use the same names as user space is ACTIVELY
>   BAD, exactly because those names have standards-defined visibility, which
>   means that the kernel _cannot_ use them in all places anyway. So don't
>   even _try_.
>


^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 05/98] exynos_drm.h: use __u64 from linux/types.h
  2015-06-01  9:08         ` Christian König
@ 2015-06-01  9:14           ` Frans Klaver
  2015-06-01  9:38           ` Russell King - ARM Linux
  1 sibling, 0 replies; 143+ messages in thread
From: Frans Klaver @ 2015-06-01  9:14 UTC (permalink / raw)
  To: Christian König
  Cc: Russell King - ARM Linux, Krzysztof Kozlowski, linux-samsung-soc,
	Mikko Rapeli, Seung-Woo Kim, linux-kernel, DRI mailing list,
	Kyungmin Park, Kukjin Kim, linux-api, linux-arm-kernel

On Mon, Jun 1, 2015 at 11:08 AM, Christian König
<christian.koenig@amd.com> wrote:
> Yeah, completely agree with Linus on the visibility problem and that's
> exactly the reason why we don't include <stdint.h> in the kernel header and
> expect userspace to define the ISO types somewhere.
>
> But using the types from "include/linux/types.h" and especially including it
> into the uapi headers doesn't make the situation better, but rather worse.
>
> With this step we not only make the headers depend on another header that
> isn't part of the uapi, but also pollute the user space namespace with __sXX
> and __uXX types which aren't defined anywhere else.

These __uXX and __sXX types are defined in
include/uapi/asm-generic/ll64.h and pulled in by
include/uapi/linux/types.h. Including linux/types.h is therefore
valid.

Frans

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 05/98] exynos_drm.h: use __u64 from linux/types.h
  2015-06-01  8:20     ` Christian König
  2015-06-01  8:56       ` Russell King - ARM Linux
@ 2015-06-01  9:15       ` Mikko Rapeli
  1 sibling, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-06-01  9:15 UTC (permalink / raw)
  To: Christian König
  Cc: Russell King - ARM Linux, Krzysztof Kozlowski, linux-samsung-soc,
	linux-api, Seung-Woo Kim, linux-kernel, dri-devel, Kyungmin Park,
	Kukjin Kim, linux-arm-kernel

On Mon, Jun 01, 2015 at 10:20:10AM +0200, Christian König wrote:
> Additional to that "linux/types.h" is not part of the uapi as far as
> I know, so including it in a header which is part of the uapi should
> be forbidden.

linux/types.h is part of uapi. See usr/include after 'make headers_install'.

-Mikko

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 05/98] exynos_drm.h: use __u64 from linux/types.h
  2015-06-01  9:08         ` Christian König
  2015-06-01  9:14           ` Frans Klaver
@ 2015-06-01  9:38           ` Russell King - ARM Linux
  2015-06-01  9:51             ` Christian König
  1 sibling, 1 reply; 143+ messages in thread
From: Russell King - ARM Linux @ 2015-06-01  9:38 UTC (permalink / raw)
  To: Christian König
  Cc: Mikko Rapeli, Krzysztof Kozlowski, linux-samsung-soc, linux-api,
	Seung-Woo Kim, linux-kernel, dri-devel, Kyungmin Park,
	Kukjin Kim, linux-arm-kernel

On Mon, Jun 01, 2015 at 11:08:21AM +0200, Christian König wrote:
> Yeah, completely agree with Linus on the visibility problem and that's
> exactly the reason why we don't include <stdint.h> in the kernel header and
> expect userspace to define the ISO types somewhere.
> 
> But using the types from "include/linux/types.h" and especially including it
> into the uapi headers doesn't make the situation better, but rather worse.
> 
> With this step we not only make the headers depend on another header that
> isn't part of the uapi, but also pollute the user space namespace with __sXX
> and __uXX types which aren't defined anywhere else.

1) Header files are permitted to pollute userspace with __-defined stuff.

2) __[su]XX types are defined as part of the kernel's uapi.
   include/uapi/linux/types.h includes asm/types.h, which in userspace
   picks up include/uapi/asm-generic/types.h.  That picks up
   asm-generic/int-ll64.h, which defines these types.

Moreover, this is done throughout the kernel headers _already_ (as you
would expect for a policy set 10+ years ago).

Please, I'm not interested in this discussion, so please don't argue
with me - I may agree with your position, but what you think and what
I think are really not relevant here.  If you have a problem, take it
up with Linus - I made that clear in my email.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 05/98] exynos_drm.h: use __u64 from linux/types.h
  2015-06-01  9:38           ` Russell King - ARM Linux
@ 2015-06-01  9:51             ` Christian König
  0 siblings, 0 replies; 143+ messages in thread
From: Christian König @ 2015-06-01  9:51 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: Mikko Rapeli, Krzysztof Kozlowski, linux-samsung-soc, linux-api,
	Seung-Woo Kim, linux-kernel, dri-devel, Kyungmin Park,
	Kukjin Kim, linux-arm-kernel

On 01.06.2015 11:38, Russell King - ARM Linux wrote:
> On Mon, Jun 01, 2015 at 11:08:21AM +0200, Christian König wrote:
>> Yeah, completely agree with Linus on the visibility problem and that's
>> exactly the reason why we don't include <stdint.h> in the kernel header and
>> expect userspace to define the ISO types somewhere.
>>
>> But using the types from "include/linux/types.h" and especially including it
>> into the uapi headers doesn't make the situation better, but rather worse.
>>
>> With this step we not only make the headers depend on another header that
>> isn't part of the uapi, but also pollute the user space namespace with __sXX
>> and __uXX types which aren't defined anywhere else.
> 1) Header files are permitted to pollute userspace with __-defined stuff.
>
> 2) __[su]XX types are defined as part of the kernel's uapi.
>     include/uapi/linux/types.h includes asm/types.h, which in userspace
>     picks up include/uapi/asm-generic/types.h.  That picks up
>     asm-generic/int-ll64.h, which defines these types.
>
> Moreover, this is done throughout the kernel headers _already_ (as you
> would expect for a policy set 10+ years ago).
>
> Please, I'm not interested in this discussion, so please don't argue
> with me - I may agree with your position, but what you think and what
> I think are really not relevant here.  If you have a problem, take it
> up with Linus - I made that clear in my email.
>
In this case I'm fine with the changes, but I'm still not sure if that's 
a good idea or not.

Sticking to ISO C still sounds better than doing something on our own. 
And it now looks a bit different than it was in 2004, stdint.h is widely 
adopted in userspace if I'm not completely mistaken.

Anyway you're perfectly right that Linus need to decide and I'm not in 
the mod to argue with him either (got way to much other things to do as 
well).

Regards,
Christian.

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 25/98] sctp.h: use __u8 and __u32 from linux/types.h
  2015-05-30 15:38 ` [PATCH 25/98] sctp.h: use __u8 and __u32 " Mikko Rapeli
@ 2015-06-01 13:40   ` Neil Horman
  0 siblings, 0 replies; 143+ messages in thread
From: Neil Horman @ 2015-06-01 13:40 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, Vlad Yasevich, linux-sctp, linux-api

On Sat, May 30, 2015 at 05:38:17PM +0200, Mikko Rapeli wrote:
> Fixes userspace compilation errors like:
> 
> linux/sctp.h:652:2: error: unknown type name ‘uint32_t’
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/linux/sctp.h | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/include/uapi/linux/sctp.h b/include/uapi/linux/sctp.h
> index ce70fe6..dd0a9c2 100644
> --- a/include/uapi/linux/sctp.h
> +++ b/include/uapi/linux/sctp.h
> @@ -718,13 +718,13 @@ struct sctp_authkeyid {
>   */
>  struct sctp_sack_info {
>  	sctp_assoc_t	sack_assoc_id;
> -	uint32_t	sack_delay;
> -	uint32_t	sack_freq;
> +	__u32	sack_delay;
> +	__u32	sack_freq;
>  };
>  
>  struct sctp_assoc_value {
>      sctp_assoc_t            assoc_id;
> -    uint32_t                assoc_value;
> +    __u32                assoc_value;
>  };
>  
>  /*
> @@ -794,7 +794,7 @@ struct sctp_status {
>  struct sctp_authchunks {
>  	sctp_assoc_t	gauth_assoc_id;
>  	__u32		gauth_number_of_chunks;
> -	uint8_t		gauth_chunks[];
> +	__u8		gauth_chunks[];
>  };
>  
>  /* The broken spelling has been released already in lksctp-tools header,
> -- 
> 2.1.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-sctp" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
Acked-by: Neil Horman <nhorman@tuxdriver.com>


^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 05/98] exynos_drm.h: use __u64 from linux/types.h
  2015-05-30 16:46   ` Russell King - ARM Linux
  2015-06-01  8:20     ` Christian König
@ 2015-06-02 18:59     ` Mikko Rapeli
  1 sibling, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-06-02 18:59 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: linux-kernel, Krzysztof Kozlowski, linux-samsung-soc,
	Joonyoung Shim, David Airlie, Seung-Woo Kim, dri-devel, Inki Dae,
	Kyungmin Park, Kukjin Kim, linux-api, linux-arm-kernel

On Sat, May 30, 2015 at 05:46:56PM +0100, Russell King - ARM Linux wrote:
> Note that drm/drm.h is all that should need to be included - drm/drm.h
> takes care of including linux/types.h when building on Linux platforms.
> (note: if your compiler doesn't set __linux__ then you're probably not
> using the proper compiler...)

Thanks, I'll fix this by including only drm/drm.h in exynos_drm.h,
nouveau_drm.h, radeon_drm.h and via_drm.h patches.

I'm using standard gcc from Debian for the x86 compilation.

-Mikko

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 18/98] include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP etc macros
  2015-05-31  8:12     ` Takashi Iwai
@ 2015-06-02 19:08       ` Mikko Rapeli
  0 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-06-02 19:08 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: linux-kernel, Jaroslav Kysela, alsa-devel, linux-api

On Sun, May 31, 2015 at 10:12:07AM +0200, Takashi Iwai wrote:
> At Sun, 31 May 2015 09:18:57 +0200,
> Takashi Iwai wrote:
> > 
> > At Sat, 30 May 2015 17:38:10 +0200,
> > Mikko Rapeli wrote:
> > > 
> > > Fixes userspace compilation error:
> > > 
> > > error: expected specifier-qualifier-list before ‘DECLARE_BITMAP’
> > >   DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
> > > 
> > > DECLARE_BITMAP etc macros are not meant for userspace headers and thus
> > > added here as private copies for emu10k.h.
> > > 
> > > Fix was suggested by Arnd Bergmann <arnd@arndb.de> in message
> > > <2168807.4Yxh5gl11Q@wuerfel> on lkml.
> > > 
> > > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> > > ---
> > >  include/uapi/sound/emu10k1.h | 23 ++++++++++++++++++++---
> > >  1 file changed, 20 insertions(+), 3 deletions(-)
> > > 
> > > diff --git a/include/uapi/sound/emu10k1.h b/include/uapi/sound/emu10k1.h
> > > index ec1535b..7575f0f 100644
> > > --- a/include/uapi/sound/emu10k1.h
> > > +++ b/include/uapi/sound/emu10k1.h
> > > @@ -34,6 +34,23 @@
> > >  
> > >  #define EMU10K1_FX8010_PCM_COUNT		8
> > >  
> > > +/*
> > > + * Following definitions are copies from kernel headers to support compiling
> > > + * this header file in userspace. The definitions are not generally available
> > > + * in uapi headers so the needed things are copied here wtih __EMU10k1 prefix.
> > > + */
> > > +
> > > +/* From include/linux/bitops.h */
> > > +#define __EMU10K1_BITS_PER_BYTE           8
> > > +/* From include/linux/kernel.h */
> > > +#define __EMU10K1_DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
> > > +/* From include/linux/bitops.h */
> > > +#define __EMU10K1_BITS_TO_LONGS(nr) \
> > > +        __EMU10K1_DIV_ROUND_UP(nr, __EMU10K1_BITS_PER_BYTE * sizeof(long))
> > > +/* From include/linux/types.h */
> > > +#define __EMU10K1_DECLARE_BITMAP(name,bits) \
> > > +        unsigned long name[__EMU10K1_BITS_TO_LONGS(bits)]
> > 
> > This is way too complicated just for a few expansion of the aligned
> > size arrays, IMO.  Rather simplify it like below with a comment:
> > 
> > /* the array must be aligned to unsigned long (i.e. 4 or 8 bytes) */
> > #define __EMU10K1_DECLARE_BITMAP(name) \
> > 	unsigned long name[(bits) / sizeof(unsigned long)]
> 
> Crap, of course, it must be multiplied with 8.
> 
> /* the array must be aligned to unsigned long (i.e. 32 or 64) */
> #define __EMU10K1_DECLARE_BITMAP(name) \
> 	unsigned long name[(bits) / (sizeof(unsigned long) * 8)]

Thanks, I'll use this definition instead.

-Mikko

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 29/98] scsi_netlink_fc.h: include stdint.h in userspace
  2015-05-30 20:17   ` Frans Klaver
@ 2015-06-02 19:14     ` Mikko Rapeli
  0 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-06-02 19:14 UTC (permalink / raw)
  To: Frans Klaver; +Cc: linux-kernel, linux-api

On Sat, May 30, 2015 at 10:17:30PM +0200, Frans Klaver wrote:
> On Sat, May 30, 2015 at 05:38:21PM +0200, Mikko Rapeli wrote:
> > Fixes compilation error:
> > 
> > scsi/scsi_netlink_fc.h:60:2: error: expected specifier-qualifier-list before ‘uint64_t’
> > 
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> > ---
> >  include/uapi/scsi/scsi_netlink_fc.h | 5 +++++
> >  1 file changed, 5 insertions(+)
> > 
> > diff --git a/include/uapi/scsi/scsi_netlink_fc.h b/include/uapi/scsi/scsi_netlink_fc.h
> > index 2493a0f..b857e34 100644
> > --- a/include/uapi/scsi/scsi_netlink_fc.h
> > +++ b/include/uapi/scsi/scsi_netlink_fc.h
> > @@ -21,6 +21,11 @@
> >  #ifndef SCSI_NETLINK_FC_H
> >  #define SCSI_NETLINK_FC_H
> >  
> > +#ifdef __KERNEL__
> > +#include <linux/types.h>
> > +#else
> > +#include <stdint.h>
> > +#endif
> >  #include <scsi/scsi_netlink.h>
> >  
> >  /*
> 
> Shouldn't we be using __u64 and __u16 in this header instead?

Indeed, this was a rebase/merge botch. Thanks!

-Mikko

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 30/98] hdspm.h: use __u8, __u32 and __u64 from linux/types.h
  2015-05-31  7:11   ` Takashi Iwai
@ 2015-06-02 19:18     ` Mikko Rapeli
  0 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-06-02 19:18 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: linux-kernel, Jaroslav Kysela, alsa-devel, linux-api

On Sun, May 31, 2015 at 09:11:54AM +0200, Takashi Iwai wrote:
> At Sat, 30 May 2015 17:38:22 +0200,
> Mikko Rapeli wrote:
> > 
> > Fixes userspace compilation errors like:
> > 
> > sound/hdspm.h:43:2: error: unknown type name ‘uint32_t’
> 
> Hmm, how do you get this error at all?
> The header includes stdint.h for user-space.

Yes, sorry. This patch removes the stdint.h include and uses kernel __u32
types instead. Will fix the commit message. Thanks!

-Mikko

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 43/98] include/uapi/linux/hdlc/ioctl.h: include linux/if.h
  2015-05-30 20:22   ` Frans Klaver
@ 2015-06-02 19:34     ` Mikko Rapeli
  0 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-06-02 19:34 UTC (permalink / raw)
  To: Frans Klaver; +Cc: linux-kernel, linux-api

On Sat, May 30, 2015 at 10:22:53PM +0200, Frans Klaver wrote:
> On Sat, May 30, 2015 at 05:38:35PM +0200, Mikko Rapeli wrote:
> > Fixes userspace compiler error:
> > 
> > error: ‘IFNAMSIZ’ undeclared here (not in a function)
> > 
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> > ---
> >  include/uapi/linux/hdlc/ioctl.h | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/include/uapi/linux/hdlc/ioctl.h b/include/uapi/linux/hdlc/ioctl.h
> > index 04bc027..8bbee11 100644
> > --- a/include/uapi/linux/hdlc/ioctl.h
> > +++ b/include/uapi/linux/hdlc/ioctl.h
> > @@ -1,6 +1,7 @@
> >  #ifndef __HDLC_IOCTL_H__
> >  #define __HDLC_IOCTL_H__
> >  
> > +#include <linux/if.h>
> >  
> >  #define GENERIC_HDLC_VERSION 4	/* For synchronization with sethdlc utility */
> 
> What's the point of this one if you break this circular dependency in
> patch 49? Are those in between related?

They are indeed...

On Sat, May 30, 2015 at 09:52:23PM +0200, Frans Klaver wrote:
> On Sat, May 30, 2015 at 05:38:41PM +0200, Mikko Rapeli wrote:
> > This isn't pretty but does the job. I assume including plain linux/hdlc/ioctl.h
> > without linux/if.h is much more rare than the other way round, and that
> > these header file names are part of API, and that creating a new header file
> > just for IFNAMSIZ isn't a good idea either.
> > 
> > Fixes userspace compiler error:
> > 
> > error: ‘IFNAMSIZ’ undeclared here (not in a function)
> > 
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> > ---
> >  include/uapi/linux/hdlc/ioctl.h | 5 ++++-
> >  include/uapi/linux/if.h         | 4 ++++
> >  2 files changed, 8 insertions(+), 1 deletion(-)
> > 
> > diff --git a/include/uapi/linux/hdlc/ioctl.h b/include/uapi/linux/hdlc/ioctl.h
> > index 8bbee11..73982ec 100644
> > --- a/include/uapi/linux/hdlc/ioctl.h
> > +++ b/include/uapi/linux/hdlc/ioctl.h
> > @@ -1,7 +1,10 @@
> >  #ifndef __HDLC_IOCTL_H__
> >  #define __HDLC_IOCTL_H__
> >  
> > -#include <linux/if.h>
> > +/* For breaking dependency loop between if.h and hdlc/ioctl.h */
> > +#ifndef IFNAMSIZ
> > +#define IFNAMSIZ        16
> > +#endif
> >  
> >  #define GENERIC_HDLC_VERSION 4	/* For synchronization with sethdlc utility */
> >  
> > diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
> > index 9cf2394..e4b130a 100644
> > --- a/include/uapi/linux/if.h
> > +++ b/include/uapi/linux/if.h
> > @@ -23,6 +23,10 @@
> >  #include <linux/socket.h>		/* for "struct sockaddr" et al	*/
> >  #include <linux/compiler.h>		/* for "__user" et al           */
> >  
> > +/**
> > + * IFNAMSIZ is also defined in linux/hdlc/ioctl.h if it does not exists
> > + * to break dependency loop between linux/if.h and linux/hdlc/ioctl.h.
> > + */
> >  #define	IFNAMSIZ	16
> >  #define	IFALIASZ	256
> >  #include <linux/hdlc/ioctl.h>
> 
> This feels backwards to me. Wouldn't it be less funky to accept that
> IFNAMSIZE isn't defined in if.h, but rather in hdlc/ioctl.h? If now

That is much less funky, thanks! I'll squash these to commits into a one
which moves IFNAMSIZ to linux/hdlc/ioctl.h.

-Mikko

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 67/98] include/uapi/linux/netfilter/ipset/ip_set_bitmap.h: include linux/netfilter/ipset/ip_set.h
  2015-05-31 18:15   ` Jozsef Kadlecsik
@ 2015-06-02 19:42     ` Mikko Rapeli
  0 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-06-02 19:42 UTC (permalink / raw)
  To: Jozsef Kadlecsik
  Cc: linux-kernel, Pablo Neira Ayuso, Patrick McHardy,
	netfilter-devel, coreteam, linux-api

On Sun, May 31, 2015 at 08:15:48PM +0200, Jozsef Kadlecsik wrote:
> On Sat, 30 May 2015, Mikko Rapeli wrote:
> 
> > Fixes userspace compilation error:
> > 
> > error: ?IPSET_ERR_TYPE_SPECIFIC? undeclared here (not in a function)
> >   IPSET_ERR_BITMAP_RANGE = IPSET_ERR_TYPE_SPECIFIC,
> 
> What kind of userspace compilation generates the error message above? How 
> can one reproduce it?

Here's the test which reproduces this https://lkml.org/lkml/2015/5/30/98

Should run on at least Debian based distributions and some cross compilers.
In the end the script generates a .c file which includes only this header file
and tries to compile it with a call like:

cc -Wall -c -nostdinc -I /usr/lib/gcc/i586-linux-gnu/4.9/include -I /usr/lib/gcc/i586-linux-gnu/4.9/include-fixed -I . -I ../headers_compile_test_include -I ../headers_compile_test_include/i586-linux-gnu ./linux/netfilter/ipset/ip_set_bitmap.c

-Mikko

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 10/98] via_drm.h: hide struct via_file_private in userspace
  2015-05-30 15:38 ` [PATCH 10/98] via_drm.h: hide struct via_file_private in userspace Mikko Rapeli
@ 2015-06-03 16:50   ` Emil Velikov
  2015-09-02 19:17     ` Mikko Rapeli
  0 siblings, 1 reply; 143+ messages in thread
From: Emil Velikov @ 2015-06-03 16:50 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: Linux-Kernel@Vger. Kernel. Org, ML dri-devel, linux-api

Hi Mikko,

On 30 May 2015 at 16:38, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> Fixes compiler error since list_head is not exported to userspace headers.
>
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/drm/via_drm.h | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h
> index 791531e..34ce658 100644
> --- a/include/uapi/drm/via_drm.h
> +++ b/include/uapi/drm/via_drm.h
> @@ -272,8 +272,10 @@ typedef struct drm_via_dmablit {
>         drm_via_blitsync_t sync;
>  } drm_via_dmablit_t;
>
> +#ifdef __KERNEL__
>  struct via_file_private {
>         struct list_head obj_list;
>  };
> +#endif
>
We might want to follow the example of other drivers (i915) and move
it to drivers/gpu/drm/via_drv.h, There are two users of this struct
(via_drv.c and via_mm.c), and each one explicitly includes the header.
How does that sound ?

Same suggestion goes for the equivalent sis patch.

Cheers
Emil

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 09/98] via_drm.h: include linux/types.h instead of non-existing via_drmclient.h
  2015-05-30 15:38 ` [PATCH 09/98] via_drm.h: include linux/types.h instead of non-existing via_drmclient.h Mikko Rapeli
@ 2015-06-03 17:16   ` Emil Velikov
  2015-06-04 11:34     ` Emil Velikov
  0 siblings, 1 reply; 143+ messages in thread
From: Emil Velikov @ 2015-06-03 17:16 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: Linux-Kernel@Vger. Kernel. Org, ML dri-devel, linux-api

Hi Mikko,

On 30 May 2015 at 16:38, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> Fixes compiler error:
>
> drm/via_drm.h:36:27: fatal error: via_drmclient.h: No such file or directory
>
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/drm/via_drm.h | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h
> index 8b0533c..791531e 100644
> --- a/include/uapi/drm/via_drm.h
> +++ b/include/uapi/drm/via_drm.h
> @@ -24,6 +24,7 @@
>  #ifndef _VIA_DRM_H_
>  #define _VIA_DRM_H_
>
> +#include <linux/types.h>
As mentioned elsewhere one could avoid this, and just use drm.h to
manage the approapriate types (uint32_t vs __u32 and so on).

>  #include <drm/drm.h>
>
>  /* WARNING: These defines must be the same as what the Xserver uses.
> @@ -33,9 +34,6 @@
>  #ifndef _VIA_DEFINES_
>  #define _VIA_DEFINES_
>
> -#ifndef __KERNEL__
> -#include "via_drmclient.h"
> -#endif
>
I fear that this one is a particular example of a nasty legacy from
the UMS days. The file is available/provided in very old mesa versions
and at the very same time mesa requires via_drm.h. So I would kindly
ask that you:

 - Grab the libdrm userspace package, and apply a similar change.
 - Rebuild/install the above.
 - Fetch mesa 7.11, and try building the via dri module. Ideally
things will continue to build, alternatively we might need to add
another/additional guard for this include.

Thanks
Emil

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 03/98] drm.h: use __kernel_size_t instead of size_t
  2015-05-30 15:37 ` [PATCH 03/98] drm.h: use __kernel_size_t instead of size_t Mikko Rapeli
@ 2015-06-03 17:19   ` Emil Velikov
  2015-08-30 10:42     ` Mikko Rapeli
  2015-10-15  6:49     ` Daniel Vetter
  0 siblings, 2 replies; 143+ messages in thread
From: Emil Velikov @ 2015-06-03 17:19 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: Linux-Kernel@Vger. Kernel. Org, ML dri-devel, linux-api

On 30 May 2015 at 16:37, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> Fixes userspace compilation error:
>
> drm/drm.h:132:2: error: unknown type name ‘size_t’
>
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/drm/drm.h | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h
> index ff6ef62..b197650 100644
> --- a/include/uapi/drm/drm.h
> +++ b/include/uapi/drm/drm.h
> @@ -129,11 +129,11 @@ struct drm_version {
>         int version_major;        /**< Major version */
>         int version_minor;        /**< Minor version */
>         int version_patchlevel;   /**< Patch level */
> -       size_t name_len;          /**< Length of name buffer */
> +       __kernel_size_t name_len;         /**< Length of name buffer */
>         char __user *name;        /**< Name of driver */
> -       size_t date_len;          /**< Length of date buffer */
> +       __kernel_size_t date_len;         /**< Length of date buffer */
>         char __user *date;        /**< User-space buffer to hold date */
> -       size_t desc_len;          /**< Length of desc buffer */
> +       __kernel_size_t desc_len;         /**< Length of desc buffer */
>         char __user *desc;        /**< User-space buffer to hold desc */
>  };
>
> @@ -143,7 +143,7 @@ struct drm_version {
>   * \sa drmGetBusid() and drmSetBusId().
>   */
>  struct drm_unique {
> -       size_t unique_len;        /**< Length of unique */
> +       __kernel_size_t unique_len;       /**< Length of unique */
As the file is used by other platforms than Linux this change will
break them. Can you add a typedef similar to how __u8 and friends are
handled at the top of the file.

Thanks
Emil

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 09/98] via_drm.h: include linux/types.h instead of non-existing via_drmclient.h
  2015-06-03 17:16   ` Emil Velikov
@ 2015-06-04 11:34     ` Emil Velikov
  0 siblings, 0 replies; 143+ messages in thread
From: Emil Velikov @ 2015-06-04 11:34 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: Linux-Kernel@Vger. Kernel. Org, ML dri-devel, linux-api

On 3 June 2015 at 18:16, Emil Velikov <emil.l.velikov@gmail.com> wrote:
> Hi Mikko,
>
> On 30 May 2015 at 16:38, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>> Fixes compiler error:
>>
>> drm/via_drm.h:36:27: fatal error: via_drmclient.h: No such file or directory
>>
>> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
>> ---
>>  include/uapi/drm/via_drm.h | 4 +---
>>  1 file changed, 1 insertion(+), 3 deletions(-)
>>
>> diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h
>> index 8b0533c..791531e 100644
>> --- a/include/uapi/drm/via_drm.h
>> +++ b/include/uapi/drm/via_drm.h
>> @@ -24,6 +24,7 @@
>>  #ifndef _VIA_DRM_H_
>>  #define _VIA_DRM_H_
>>
>> +#include <linux/types.h>
> As mentioned elsewhere one could avoid this, and just use drm.h to
> manage the approapriate types (uint32_t vs __u32 and so on).
>
>>  #include <drm/drm.h>
>>
>>  /* WARNING: These defines must be the same as what the Xserver uses.
>> @@ -33,9 +34,6 @@
>>  #ifndef _VIA_DEFINES_
>>  #define _VIA_DEFINES_
>>
>> -#ifndef __KERNEL__
>> -#include "via_drmclient.h"
>> -#endif
>>
> I fear that this one is a particular example of a nasty legacy from
> the UMS days. The file is available/provided in very old mesa versions
> and at the very same time mesa requires via_drm.h. So I would kindly
> ask that you:
>
>  - Grab the libdrm userspace package, and apply a similar change.
>  - Rebuild/install the above.
>  - Fetch mesa 7.11, and try building the via dri module. Ideally
> things will continue to build, alternatively we might need to add
> another/additional guard for this include.
>
So the situation is "funnier" than expected:
 - There are at least two users of via_drm.h (mesa and xf86-video-via)
with each providing different via_drmclient.h.
 - Neither of the two projects includes the latter header, despite
that it uses the macros defined within.
 - via_drm.h is included via multiple headers, so adding extra ifdef
guards sounds like a bad idea.
 - While new version of the ddx can be released, a mesa one is
unlikely - 7.11.2 was released ~4 years ago.
 - Even if we cover the above two project, other projects (how many,
where are they hosted, etc.) may need the same treatment.

With the above said I'd suspect that we're safer leaving the include
as is ? Yes, it is busted if one tries to use the standalone header,
jet (most/all?) official users rely on that behaviour :-\

Cheers
Emil

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 03/98] drm.h: use __kernel_size_t instead of size_t
  2015-06-03 17:19   ` Emil Velikov
@ 2015-08-30 10:42     ` Mikko Rapeli
  2015-10-15  6:49     ` Daniel Vetter
  1 sibling, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-08-30 10:42 UTC (permalink / raw)
  To: Emil Velikov; +Cc: Linux-Kernel@Vger. Kernel. Org, ML dri-devel, linux-api

On Wed, Jun 03, 2015 at 06:19:48PM +0100, Emil Velikov wrote:
> On 30 May 2015 at 16:37, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> > Fixes userspace compilation error:
> >
> > drm/drm.h:132:2: error: unknown type name ‘size_t’
> >
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> > ---
> >  include/uapi/drm/drm.h | 8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h
> > index ff6ef62..b197650 100644
> > --- a/include/uapi/drm/drm.h
> > +++ b/include/uapi/drm/drm.h
> > @@ -129,11 +129,11 @@ struct drm_version {
> >         int version_major;        /**< Major version */
> >         int version_minor;        /**< Minor version */
> >         int version_patchlevel;   /**< Patch level */
> > -       size_t name_len;          /**< Length of name buffer */
> > +       __kernel_size_t name_len;         /**< Length of name buffer */
> >         char __user *name;        /**< Name of driver */
> > -       size_t date_len;          /**< Length of date buffer */
> > +       __kernel_size_t date_len;         /**< Length of date buffer */
> >         char __user *date;        /**< User-space buffer to hold date */
> > -       size_t desc_len;          /**< Length of desc buffer */
> > +       __kernel_size_t desc_len;         /**< Length of desc buffer */
> >         char __user *desc;        /**< User-space buffer to hold desc */
> >  };
> >
> > @@ -143,7 +143,7 @@ struct drm_version {
> >   * \sa drmGetBusid() and drmSetBusId().
> >   */
> >  struct drm_unique {
> > -       size_t unique_len;        /**< Length of unique */
> > +       __kernel_size_t unique_len;       /**< Length of unique */
> As the file is used by other platforms than Linux this change will
> break them. Can you add a typedef similar to how __u8 and friends are
> handled at the top of the file.

Yes, I added typedef size_t   __kernel_size_t; for other platforms.

-Mikko

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 10/98] via_drm.h: hide struct via_file_private in userspace
  2015-06-03 16:50   ` Emil Velikov
@ 2015-09-02 19:17     ` Mikko Rapeli
  0 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-09-02 19:17 UTC (permalink / raw)
  To: Emil Velikov; +Cc: Linux-Kernel@Vger. Kernel. Org, ML dri-devel, linux-api

On Wed, Jun 03, 2015 at 05:50:22PM +0100, Emil Velikov wrote:
> Hi Mikko,
> 
> On 30 May 2015 at 16:38, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> > Fixes compiler error since list_head is not exported to userspace headers.
> >
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> > ---
> >  include/uapi/drm/via_drm.h | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h
> > index 791531e..34ce658 100644
> > --- a/include/uapi/drm/via_drm.h
> > +++ b/include/uapi/drm/via_drm.h
> > @@ -272,8 +272,10 @@ typedef struct drm_via_dmablit {
> >         drm_via_blitsync_t sync;
> >  } drm_via_dmablit_t;
> >
> > +#ifdef __KERNEL__
> >  struct via_file_private {
> >         struct list_head obj_list;
> >  };
> > +#endif
> >
> We might want to follow the example of other drivers (i915) and move
> it to drivers/gpu/drm/via_drv.h, There are two users of this struct
> (via_drv.c and via_mm.c), and each one explicitly includes the header.
> How does that sound ?
> 
> Same suggestion goes for the equivalent sis patch.

Thanks, moved both of the file_private definitions to the driver headers.

-Mikko

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 94/98] HACK arch/x86/include/uapi/asm/sigcontext32.h: remove _fpx_sw_bytes from union
  2015-05-30 15:39 ` [PATCH 94/98] HACK arch/x86/include/uapi/asm/sigcontext32.h: remove _fpx_sw_bytes from union Mikko Rapeli
@ 2015-09-02 19:34   ` Mikko Rapeli
  2015-09-03  7:42     ` [PATCH] x86/headers: Fix (old) header file dependency bug in uapi/asm/sigcontext32.h Ingo Molnar
  0 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-09-02 19:34 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86; +Cc: linux-kernel

Hi Ingo, Thomas and Peter,

Do you have any pointers for me how arch/x86/include/uapi/asm/sigcontext32.h
could be fixed to also compile in userspace? Is definition of _fpx_sw_bytes
or _fpstate_ia32 even needed there?

Instructions to reproduce the userspace build failure are here:
https://lkml.org/lkml/2015/5/30/98

-Mikko

On Sat, May 30, 2015 at 05:39:26PM +0200, Mikko Rapeli wrote:
> I have no idea what I'm doing but this fixes header file compilation in
> userspace:
> 
> error: field ‘sw_reserved’ has incomplete type
>    struct _fpx_sw_bytes sw_reserved;
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  arch/x86/include/uapi/asm/sigcontext32.h | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/arch/x86/include/uapi/asm/sigcontext32.h b/arch/x86/include/uapi/asm/sigcontext32.h
> index ad1478c..ceaaa78 100644
> --- a/arch/x86/include/uapi/asm/sigcontext32.h
> +++ b/arch/x86/include/uapi/asm/sigcontext32.h
> @@ -45,7 +45,6 @@ struct _fpstate_ia32 {
>  	__u32	padding[44];
>  	union {
>  		__u32 padding2[12];
> -		struct _fpx_sw_bytes sw_reserved;
>  	};
>  };
>  
> -- 
> 2.1.4
> 

^ permalink raw reply	[flat|nested] 143+ messages in thread

* [PATCH] x86/headers: Fix (old) header file dependency bug in uapi/asm/sigcontext32.h
  2015-09-02 19:34   ` Mikko Rapeli
@ 2015-09-03  7:42     ` Ingo Molnar
  2015-09-04  7:10       ` Mikko Rapeli
  0 siblings, 1 reply; 143+ messages in thread
From: Ingo Molnar @ 2015-09-03  7:42 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, linux-kernel,
	Linus Torvalds, Borislav Petkov, Andy Lutomirski


* Mikko Rapeli <mikko.rapeli@iki.fi> wrote:

> Hi Ingo, Thomas and Peter,
> 
> Do you have any pointers for me how arch/x86/include/uapi/asm/sigcontext32.h
> could be fixed to also compile in userspace? Is definition of _fpx_sw_bytes
> or _fpstate_ia32 even needed there?
> 
> Instructions to reproduce the userspace build failure are here:
> https://lkml.org/lkml/2015/5/30/98

Yeah, so this is a real bug in the headers, good find.

Also note that somewhat luckily your testcase is artificial, no real user-space 
code can contain that code at the moment because the header never built standalone 
in the past either AFAICS.

So it's an old header file dependency bug, to make it build in user-space you need 
to do this workaround:

 #include <asm/sigcontext.h>
 #include <asm/sigcontext32.h>

If you only include sigcontext32.h:

 #include <asm/sigcontext32.h>

it will fail to build.

To fix the bug:

> > --- a/arch/x86/include/uapi/asm/sigcontext32.h
> > +++ b/arch/x86/include/uapi/asm/sigcontext32.h
> > @@ -45,7 +45,6 @@ struct _fpstate_ia32 {
> >  	__u32	padding[44];
> >  	union {
> >  		__u32 padding2[12];
> > -		struct _fpx_sw_bytes sw_reserved;
> >  	};
> >  };

No, those fields are real and compat sigframe handling user-space might be relying 
on them.

Does the fix below work for you?

Thanks,

	Ingo

=========================>
>From 0bcdebb70e1ae246139df71acfa744ab1629d877 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@kernel.org>
Date: Thu, 3 Sep 2015 09:35:19 +0200
Subject: [PATCH] x86/headers: Fix (old) header file dependency bug in uapi/asm/sigcontext32.h

Mikko Rapeli reported that the following standalone user-space header does not compile:

  #include <asm/sigcontext32.h>

Due to undefined 'struct __fpx_sw_bytes' which is defined in asm/sigcontext.h.

The following header order works:

  #include <asm/sigcontext.h>
  #include <asm/sigcontext32.h>

and that's probably how everyone's been using these headers for the past decade or
so, but it's a legit header file dependency bug, so include asm/sigcontext.h in
sigcontext32.h to allow it to be built standlone.

Reported-by: Mikko Rapeli <mikko.rapeli@iki.fi>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/include/uapi/asm/sigcontext32.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/x86/include/uapi/asm/sigcontext32.h b/arch/x86/include/uapi/asm/sigcontext32.h
index ad1478c4ae12..ff7826c41a1c 100644
--- a/arch/x86/include/uapi/asm/sigcontext32.h
+++ b/arch/x86/include/uapi/asm/sigcontext32.h
@@ -3,6 +3,8 @@
 
 #include <linux/types.h>
 
+#include <asm/sigcontext.h>
+
 /* signal context for 32bit programs. */
 
 #define X86_FXSR_MAGIC		0x0000


^ permalink raw reply related	[flat|nested] 143+ messages in thread

* Re: [PATCH] x86/headers: Fix (old) header file dependency bug in uapi/asm/sigcontext32.h
  2015-09-03  7:42     ` [PATCH] x86/headers: Fix (old) header file dependency bug in uapi/asm/sigcontext32.h Ingo Molnar
@ 2015-09-04  7:10       ` Mikko Rapeli
  2015-09-04  8:58         ` Ingo Molnar
  0 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-09-04  7:10 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, linux-kernel,
	Linus Torvalds, Borislav Petkov, Andy Lutomirski

On Thu, Sep 03, 2015 at 09:42:32AM +0200, Ingo Molnar wrote:
> 
> * Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> 
> > Hi Ingo, Thomas and Peter,
> > 
> > Do you have any pointers for me how arch/x86/include/uapi/asm/sigcontext32.h
> > could be fixed to also compile in userspace? Is definition of _fpx_sw_bytes
> > or _fpstate_ia32 even needed there?
> > 
> > Instructions to reproduce the userspace build failure are here:
> > https://lkml.org/lkml/2015/5/30/98
> 
> Yeah, so this is a real bug in the headers, good find.
> 
> Also note that somewhat luckily your testcase is artificial, no real user-space 
> code can contain that code at the moment because the header never built standalone 
> in the past either AFAICS.
> 
> So it's an old header file dependency bug, to make it build in user-space you need 
> to do this workaround:
> 
>  #include <asm/sigcontext.h>
>  #include <asm/sigcontext32.h>
> 
> If you only include sigcontext32.h:
> 
>  #include <asm/sigcontext32.h>
> 
> it will fail to build.
> 
> To fix the bug:
> 
> > > --- a/arch/x86/include/uapi/asm/sigcontext32.h
> > > +++ b/arch/x86/include/uapi/asm/sigcontext32.h
> > > @@ -45,7 +45,6 @@ struct _fpstate_ia32 {
> > >  	__u32	padding[44];
> > >  	union {
> > >  		__u32 padding2[12];
> > > -		struct _fpx_sw_bytes sw_reserved;
> > >  	};
> > >  };
> 
> No, those fields are real and compat sigframe handling user-space might be relying 
> on them.
>
> Does the fix below work for you?

Unfortunately no:

cc -Wall -c -nostdinc -I /usr/lib/gcc/i586-linux-gnu/5/include -I /usr/lib/gcc/i
586-linux-gnu/5/include-fixed -I . -I ../headers_compile_test_include -I ../head
ers_compile_test_include/i586-linux-gnu ./asm/sigcontext32.c
In file included from ./asm/sigcontext32.c:1:0:
./asm/sigcontext32.h:12:8: error: redefinition of ‘struct _fpreg’
 struct _fpreg {
        ^
In file included from ./asm/sigcontext32.h:6:0,
                 from ./asm/sigcontext32.c:1:
./asm/sigcontext.h:56:8: note: originally defined here
 struct _fpreg {
        ^
In file included from ./asm/sigcontext32.c:1:0:
./asm/sigcontext32.h:17:8: error: redefinition of ‘struct _fpxreg’
 struct _fpxreg {
        ^
In file included from ./asm/sigcontext32.h:6:0,
                 from ./asm/sigcontext32.c:1:
./asm/sigcontext.h:61:8: note: originally defined here
 struct _fpxreg {
        ^
In file included from ./asm/sigcontext32.c:1:0:
./asm/sigcontext32.h:23:8: error: redefinition of ‘struct _xmmreg’
 struct _xmmreg {
        ^
In file included from ./asm/sigcontext32.h:6:0,
                 from ./asm/sigcontext32.c:1:
./asm/sigcontext.h:67:8: note: originally defined here
 struct _xmmreg {
        ^
FAILED: ./asm/sigcontext32.h

I guess this was the reason why I ended with the hack.

-Mikko

> Thanks,
> 
> 	Ingo
> 
> =========================>
> >From 0bcdebb70e1ae246139df71acfa744ab1629d877 Mon Sep 17 00:00:00 2001
> From: Ingo Molnar <mingo@kernel.org>
> Date: Thu, 3 Sep 2015 09:35:19 +0200
> Subject: [PATCH] x86/headers: Fix (old) header file dependency bug in uapi/asm/sigcontext32.h
> 
> Mikko Rapeli reported that the following standalone user-space header does not compile:
> 
>   #include <asm/sigcontext32.h>
> 
> Due to undefined 'struct __fpx_sw_bytes' which is defined in asm/sigcontext.h.
> 
> The following header order works:
> 
>   #include <asm/sigcontext.h>
>   #include <asm/sigcontext32.h>
> 
> and that's probably how everyone's been using these headers for the past decade or
> so, but it's a legit header file dependency bug, so include asm/sigcontext.h in
> sigcontext32.h to allow it to be built standlone.
> 
> Reported-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> Cc: Andy Lutomirski <luto@amacapital.net>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: Brian Gerst <brgerst@gmail.com>
> Cc: Denys Vlasenko <dvlasenk@redhat.com>
> Cc: H. Peter Anvin <hpa@zytor.com>
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Ingo Molnar <mingo@kernel.org>
> ---
>  arch/x86/include/uapi/asm/sigcontext32.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/arch/x86/include/uapi/asm/sigcontext32.h b/arch/x86/include/uapi/asm/sigcontext32.h
> index ad1478c4ae12..ff7826c41a1c 100644
> --- a/arch/x86/include/uapi/asm/sigcontext32.h
> +++ b/arch/x86/include/uapi/asm/sigcontext32.h
> @@ -3,6 +3,8 @@
>  
>  #include <linux/types.h>
>  
> +#include <asm/sigcontext.h>
> +
>  /* signal context for 32bit programs. */
>  
>  #define X86_FXSR_MAGIC		0x0000
> 

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH] x86/headers: Fix (old) header file dependency bug in uapi/asm/sigcontext32.h
  2015-09-04  7:10       ` Mikko Rapeli
@ 2015-09-04  8:58         ` Ingo Molnar
  2015-09-04 12:18           ` Mikko Rapeli
  0 siblings, 1 reply; 143+ messages in thread
From: Ingo Molnar @ 2015-09-04  8:58 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, linux-kernel,
	Linus Torvalds, Borislav Petkov, Andy Lutomirski


* Mikko Rapeli <mikko.rapeli@iki.fi> wrote:

> On Thu, Sep 03, 2015 at 09:42:32AM +0200, Ingo Molnar wrote:
> > 
> > * Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> > 
> > > Hi Ingo, Thomas and Peter,
> > > 
> > > Do you have any pointers for me how arch/x86/include/uapi/asm/sigcontext32.h
> > > could be fixed to also compile in userspace? Is definition of _fpx_sw_bytes
> > > or _fpstate_ia32 even needed there?
> > > 
> > > Instructions to reproduce the userspace build failure are here:
> > > https://lkml.org/lkml/2015/5/30/98
> > 
> > Yeah, so this is a real bug in the headers, good find.
> > 
> > Also note that somewhat luckily your testcase is artificial, no real user-space 
> > code can contain that code at the moment because the header never built standalone 
> > in the past either AFAICS.
> > 
> > So it's an old header file dependency bug, to make it build in user-space you need 
> > to do this workaround:
> > 
> >  #include <asm/sigcontext.h>
> >  #include <asm/sigcontext32.h>
> > 
> > If you only include sigcontext32.h:
> > 
> >  #include <asm/sigcontext32.h>
> > 
> > it will fail to build.
> > 
> > To fix the bug:
> > 
> > > > --- a/arch/x86/include/uapi/asm/sigcontext32.h
> > > > +++ b/arch/x86/include/uapi/asm/sigcontext32.h
> > > > @@ -45,7 +45,6 @@ struct _fpstate_ia32 {
> > > >  	__u32	padding[44];
> > > >  	union {
> > > >  		__u32 padding2[12];
> > > > -		struct _fpx_sw_bytes sw_reserved;
> > > >  	};
> > > >  };
> > 
> > No, those fields are real and compat sigframe handling user-space might be relying 
> > on them.
> >
> > Does the fix below work for you?
> 
> Unfortunately no:
> 
> cc -Wall -c -nostdinc -I /usr/lib/gcc/i586-linux-gnu/5/include -I /usr/lib/gcc/i
> 586-linux-gnu/5/include-fixed -I . -I ../headers_compile_test_include -I ../head
> ers_compile_test_include/i586-linux-gnu ./asm/sigcontext32.c
> In file included from ./asm/sigcontext32.c:1:0:
> ./asm/sigcontext32.h:12:8: error: redefinition of ‘struct _fpreg’
>  struct _fpreg {
>         ^
> In file included from ./asm/sigcontext32.h:6:0,
>                  from ./asm/sigcontext32.c:1:
> ./asm/sigcontext.h:56:8: note: originally defined here
>  struct _fpreg {
>         ^
> In file included from ./asm/sigcontext32.c:1:0:
> ./asm/sigcontext32.h:17:8: error: redefinition of ‘struct _fpxreg’
>  struct _fpxreg {
>         ^
> In file included from ./asm/sigcontext32.h:6:0,
>                  from ./asm/sigcontext32.c:1:
> ./asm/sigcontext.h:61:8: note: originally defined here
>  struct _fpxreg {
>         ^
> In file included from ./asm/sigcontext32.c:1:0:
> ./asm/sigcontext32.h:23:8: error: redefinition of ‘struct _xmmreg’
>  struct _xmmreg {
>         ^
> In file included from ./asm/sigcontext32.h:6:0,
>                  from ./asm/sigcontext32.c:1:
> ./asm/sigcontext.h:67:8: note: originally defined here
>  struct _xmmreg {
>         ^
> FAILED: ./asm/sigcontext32.h
> 
> I guess this was the reason why I ended with the hack.

sigcontext32.h is a 64-bit only header (for compat functionality), and you are 
trying to build this on i386, right?

In theory we could unify them mostly, the two structures match mostly, except that 
'_fpstate_ia32::padding' is named 'padding1' in _fpstate, and there's also some 
legacy uglies wrt. user-space sigcontext definitions.

So this either gets cleaned up properly, with the legacy hacks/wrappers clearly 
isolated, or we could state that you shouldn't build 64-bit headers in 32-bit 
environments.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH] x86/headers: Fix (old) header file dependency bug in uapi/asm/sigcontext32.h
  2015-09-04  8:58         ` Ingo Molnar
@ 2015-09-04 12:18           ` Mikko Rapeli
  2015-09-05  7:32             ` Ingo Molnar
  0 siblings, 1 reply; 143+ messages in thread
From: Mikko Rapeli @ 2015-09-04 12:18 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, linux-kernel,
	Linus Torvalds, Borislav Petkov, Andy Lutomirski

On Fri, Sep 04, 2015 at 10:58:31AM +0200, Ingo Molnar wrote:
> 
> * Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> 
> > On Thu, Sep 03, 2015 at 09:42:32AM +0200, Ingo Molnar wrote:
> > > 
> > > * Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> > > 
> > > > Hi Ingo, Thomas and Peter,
> > > > 
> > > > Do you have any pointers for me how arch/x86/include/uapi/asm/sigcontext32.h
> > > > could be fixed to also compile in userspace? Is definition of _fpx_sw_bytes
> > > > or _fpstate_ia32 even needed there?
> > > > 
> > > > Instructions to reproduce the userspace build failure are here:
> > > > https://lkml.org/lkml/2015/5/30/98
> > > 
> > > Yeah, so this is a real bug in the headers, good find.
> > > 
> > > Also note that somewhat luckily your testcase is artificial, no real user-space 
> > > code can contain that code at the moment because the header never built standalone 
> > > in the past either AFAICS.
> > > 
> > > So it's an old header file dependency bug, to make it build in user-space you need 
> > > to do this workaround:
> > > 
> > >  #include <asm/sigcontext.h>
> > >  #include <asm/sigcontext32.h>
> > > 
> > > If you only include sigcontext32.h:
> > > 
> > >  #include <asm/sigcontext32.h>
> > > 
> > > it will fail to build.
> > > 
> > > To fix the bug:
> > > 
> > > > > --- a/arch/x86/include/uapi/asm/sigcontext32.h
> > > > > +++ b/arch/x86/include/uapi/asm/sigcontext32.h
> > > > > @@ -45,7 +45,6 @@ struct _fpstate_ia32 {
> > > > >  	__u32	padding[44];
> > > > >  	union {
> > > > >  		__u32 padding2[12];
> > > > > -		struct _fpx_sw_bytes sw_reserved;
> > > > >  	};
> > > > >  };
> > > 
> > > No, those fields are real and compat sigframe handling user-space might be relying 
> > > on them.
> > >
> > > Does the fix below work for you?
> > 
> > Unfortunately no:
> > 
> > cc -Wall -c -nostdinc -I /usr/lib/gcc/i586-linux-gnu/5/include -I /usr/lib/gcc/i
> > 586-linux-gnu/5/include-fixed -I . -I ../headers_compile_test_include -I ../head
> > ers_compile_test_include/i586-linux-gnu ./asm/sigcontext32.c
> > In file included from ./asm/sigcontext32.c:1:0:
> > ./asm/sigcontext32.h:12:8: error: redefinition of ‘struct _fpreg’
> >  struct _fpreg {
> >         ^
> > In file included from ./asm/sigcontext32.h:6:0,
> >                  from ./asm/sigcontext32.c:1:
> > ./asm/sigcontext.h:56:8: note: originally defined here
> >  struct _fpreg {
> >         ^
> > In file included from ./asm/sigcontext32.c:1:0:
> > ./asm/sigcontext32.h:17:8: error: redefinition of ‘struct _fpxreg’
> >  struct _fpxreg {
> >         ^
> > In file included from ./asm/sigcontext32.h:6:0,
> >                  from ./asm/sigcontext32.c:1:
> > ./asm/sigcontext.h:61:8: note: originally defined here
> >  struct _fpxreg {
> >         ^
> > In file included from ./asm/sigcontext32.c:1:0:
> > ./asm/sigcontext32.h:23:8: error: redefinition of ‘struct _xmmreg’
> >  struct _xmmreg {
> >         ^
> > In file included from ./asm/sigcontext32.h:6:0,
> >                  from ./asm/sigcontext32.c:1:
> > ./asm/sigcontext.h:67:8: note: originally defined here
> >  struct _xmmreg {
> >         ^
> > FAILED: ./asm/sigcontext32.h
> > 
> > I guess this was the reason why I ended with the hack.
> 
> sigcontext32.h is a 64-bit only header (for compat functionality), and you are 
> trying to build this on i386, right?

Yes, i386 32bit.

> In theory we could unify them mostly, the two structures match mostly, except that 
> '_fpstate_ia32::padding' is named 'padding1' in _fpstate, and there's also some 
> legacy uglies wrt. user-space sigcontext definitions.
> 
> So this either gets cleaned up properly, with the legacy hacks/wrappers clearly 
> isolated, or we could state that you shouldn't build 64-bit headers in 32-bit 
> environments.

Should the sigcontext32.h have some 32bit ifdefs maybe?

I assume that the exported header files should be the same for both 64 and 32
bit i386/x86

-Mikko

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH] x86/headers: Fix (old) header file dependency bug in uapi/asm/sigcontext32.h
  2015-09-04 12:18           ` Mikko Rapeli
@ 2015-09-05  7:32             ` Ingo Molnar
  0 siblings, 0 replies; 143+ messages in thread
From: Ingo Molnar @ 2015-09-05  7:32 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, linux-kernel,
	Linus Torvalds, Borislav Petkov, Andy Lutomirski


* Mikko Rapeli <mikko.rapeli@iki.fi> wrote:

> > sigcontext32.h is a 64-bit only header (for compat functionality), and you are 
> > trying to build this on i386, right?
> 
> Yes, i386 32bit.
> 
> > In theory we could unify them mostly, the two structures match mostly, except that 
> > '_fpstate_ia32::padding' is named 'padding1' in _fpstate, and there's also some 
> > legacy uglies wrt. user-space sigcontext definitions.
> > 
> > So this either gets cleaned up properly, with the legacy hacks/wrappers clearly 
> > isolated, or we could state that you shouldn't build 64-bit headers in 32-bit 
> > environments.
> 
> Should the sigcontext32.h have some 32bit ifdefs maybe?

That gets ugly pretty fast.

> I assume that the exported header files should be the same for both 64 and 32
> bit i386/x86

Yes. I have written a small series cleaning up all these header problems - I'll 
send it out in a few minutes.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [Xen-devel] [PATCH 95/98] HACK: fix include/uapi/xen/privcmd.h compilation in userspace
  2015-05-30 17:56   ` [Xen-devel] " Andrew Cooper
@ 2015-09-10 19:46     ` Mikko Rapeli
  0 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-09-10 19:46 UTC (permalink / raw)
  To: Andrew Cooper
  Cc: linux-kernel, Juergen Gross, Alexander Yarygin, x86,
	Arnaldo Carvalho de Melo, Christian Borntraeger, Ingo Molnar,
	David Vrabel, H. Peter Anvin, Cornelia Huck, xen-devel,
	Thomas Gleixner, linux-api, Boris Ostrovsky

On Sat, May 30, 2015 at 06:56:25PM +0100, Andrew Cooper wrote:
> On 30/05/15 16:39, Mikko Rapeli wrote:
> > privcmd.h depends on xen/interface/xen.h which is now exported to userspace.
> > xen/interface/xen.h then depends on asm/xen/interface.h which is now
> > exported to userspace together with its dependencies asm/xen/interface_32.h,
> > asm/xen/interface_64.h and asm/pvclock-abi.h on x86 architecture.
> >
> > Then all of these headers were fixed to use __u8 etc from linux/types.h
> > instead of custom types.
> >
> > Then define uint64_t and uint32_t if needed.
> >
> > After all these changes these header files now compile in userspace too
> > on x86.
> >
> > HACK since I have no idea if this is correct way to fix this.
> >
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> 
> Historical reasons expect xen/interface/xen.h to be a verbatim copy of
> the master version kept in the Xen repository.
> 
> The only things privcmd.h need from interface/xen.h are domid_t
> (uint16_t), and xen_pfn_t (unsigned long, or uint64_t in arm32 iirc),
> while the majority of the rest absolutely shouldn't be in Linux’s uapi.
> 
> It would probably be best to provide just these two types and nuke the
> "#include <xen/interface/xen.h>".  Any user of privcmd needs to include
> the Xen interface themselves anyway, and will have a different copy
> which includes the toolstack half of the interface (missing from the
> kernel copy) which is the useful set of definitions for driving the
> privcmd ioctl()s.

Thanks! Doing this in the next series of the patches.

-Mikko

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 96/98] HACK include/uapi/linux/coda_psdev.h: fix compilation in userspace
  2015-05-31 11:19   ` Jan Harkes
@ 2015-09-10 19:48     ` Mikko Rapeli
  0 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-09-10 19:48 UTC (permalink / raw)
  To: linux-kernel, linux-api

On Sun, May 31, 2015 at 07:19:13AM -0400, Jan Harkes wrote:
> On Sat, May 30, 2015 at 05:39:28PM +0200, Mikko Rapeli wrote:
> > Include linux/coda.h for caddr_t and use unsigned short type directly.
> > Userspace headers do not have list_head and wait_queue_head_t so just
> > ifdef them away which is a HACK. Any ideas how to fix this properly?
> 
> I grepped the Coda userspace sources and it doesn't look like this
> particular struct is used there anyway, it is only used by the kernel
> module to track which requests are waiting to be read by the Coda
> userspace application and after that which requests are waiting for a
> response.
> 
> I guess a proper fix would be to move this struct to a non-uapi header,
> or maybe even to the (probably) only C file in the kernel where it is
> used.

Thanks! I'm moving upc_req definition to kernel side linux/coda_psdev.h
in the next version of the patches.

-Mikko

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 97/98] HACK include/uapi/linux/elfcore.h: use __kernel_pid_t and remove elf_greg_t stuff in userspace
  2015-05-30 15:39 ` [PATCH 97/98] HACK include/uapi/linux/elfcore.h: use __kernel_pid_t and remove elf_greg_t stuff " Mikko Rapeli
@ 2015-10-06 19:20   ` Mikko Rapeli
  0 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-10-06 19:20 UTC (permalink / raw)
  To: linux-kernel; +Cc: linux-api

Trying to find out what would be an acceptable fix for elfcore.h but..

On Sat, May 30, 2015 at 05:39:29PM +0200, Mikko Rapeli wrote:
> __kernel_pid_t change feels like right one. Commenting out elf_greg_t
> things in userspace does not but exporting x86/include/asm/elf.h and its
> dependencies to userspace does not feel right either. Hence HACK.
> 
> Fixes userspace compilation errors like:
> 
> error: unknown type name ‘elf_greg_t’
>  typedef elf_greg_t greg_t;
> error: unknown type name ‘pid_t’
>   pid_t pr_pid;

Ugh. This opens up a can of worms. And not just a single can. Every
architecture supported by Linux has one, for every supported binary
format.

So uapi has a number of headers for exporting process core dump
related structs and defines to userspace. Sadly elfcore.h does not compile in
userspace as is and practically depends on architecture specific
defines for the elf file format and all the way done to some memory
management details which are not part of uapi.

Since the headers are not exported to userspace, a grep with
elf_greg_t definition in my /usr/include shows that gcc has its own modified
version of these headers which have the details which gdb needs, in
sys/procfs.h, sys/user.h and friends. Also linux-tools has it's own modified
versions of these headers with comments like
"Make sure these layouts match the linux/elfcore.h native definitions."

Search on Debian source code tree shows that real users of linux/elfcore.h
don't really exist and everyone has had to create their own copies
with all relevant dependencies to make things work in user space.

On the long term would be nice if these header file worm cans were cleaned
up but for the short term I'd like to get elfcore.h compiling so that I can
continue fiddling with kernel header sanity tests and API and ABI
compatibility checks. For this reason I'd like to propose this dumb solution
for now which:

 * removes typedef elf_greg_t greg_t and friends from userspace headers
 * removes struct elf_prstatus from userspace headers

Comments?

--- a/include/uapi/linux/elfcore.h
+++ b/include/uapi/linux/elfcore.h
@@ -15,15 +15,7 @@ struct elf_siginfo
        int     si_errno;                       /* errno */
 };
 
-
-#ifndef __KERNEL__
-typedef elf_greg_t greg_t;
-typedef elf_gregset_t gregset_t;
-typedef elf_fpregset_t fpregset_t;
-typedef elf_fpxregset_t fpxregset_t;
-#define NGREG ELF_NGREG
-#endif
-
+#ifdef __KERNEL__
 /*
  * Definitions to generate Intel SVR4-like core files.
  * These mostly have the same names as the SVR4 types with "elf_"
@@ -48,10 +40,10 @@ struct elf_prstatus
        struct sigaltstack pr_altstack; /* Alternate stack info */
        struct sigaction pr_action;     /* Signal action for current sig */
 #endif
-       pid_t   pr_pid;
-       pid_t   pr_ppid;
-       pid_t   pr_pgrp;
-       pid_t   pr_sid;
+       __kernel_pid_t  pr_pid;
+       __kernel_pid_t  pr_ppid;
+       __kernel_pid_t  pr_pgrp;
+       __kernel_pid_t  pr_sid;
        struct timeval pr_utime;        /* User time */
        struct timeval pr_stime;        /* System time */
        struct timeval pr_cutime;       /* Cumulative user time */
@@ -72,6 +64,7 @@ struct elf_prstatus
 #endif
        int pr_fpvalid;         /* True if math co-processor being used.  */
 };
+#endif /* __KERNEL__ */
 
 #define ELF_PRARGSZ    (80)    /* Number of chars for args */
 
@@ -84,7 +77,7 @@ struct elf_prpsinfo
        unsigned long pr_flag;  /* flags */
        __kernel_uid_t  pr_uid;
        __kernel_gid_t  pr_gid;
-       pid_t   pr_pid, pr_ppid, pr_pgrp, pr_sid;
+       __kernel_pid_t  pr_pid, pr_ppid, pr_pgrp, pr_sid;
        /* Lots missing */
        char    pr_fname[16];   /* filename of executable */
        char    pr_psargs[ELF_PRARGSZ]; /* initial part of arg list */


> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/linux/elfcore.h | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
> 
> diff --git a/include/uapi/linux/elfcore.h b/include/uapi/linux/elfcore.h
> index 569737c..b9d1233 100644
> --- a/include/uapi/linux/elfcore.h
> +++ b/include/uapi/linux/elfcore.h
> @@ -17,11 +17,13 @@ struct elf_siginfo
>  
>  
>  #ifndef __KERNEL__
> +#if 0
>  typedef elf_greg_t greg_t;
>  typedef elf_gregset_t gregset_t;
>  typedef elf_fpregset_t fpregset_t;
>  typedef elf_fpxregset_t fpxregset_t;
>  #define NGREG ELF_NGREG
> +#endif /* 0 */
>  #endif
>  /*
> @@ -48,10 +50,10 @@ struct elf_prstatus
>  	struct sigaltstack pr_altstack;	/* Alternate stack info */
>  	struct sigaction pr_action;	/* Signal action for current sig */
>  #endif
> -	pid_t	pr_pid;
> -	pid_t	pr_ppid;
> -	pid_t	pr_pgrp;
> -	pid_t	pr_sid;
> +	__kernel_pid_t	pr_pid;
> +	__kernel_pid_t	pr_ppid;
> +	__kernel_pid_t	pr_pgrp;
> +	__kernel_pid_t	pr_sid;
>  	struct timeval pr_utime;	/* User time */
>  	struct timeval pr_stime;	/* System time */
>  	struct timeval pr_cutime;	/* Cumulative user time */
> @@ -59,7 +61,9 @@ struct elf_prstatus
>  #if 0
>  	long	pr_instr;		/* Current instruction */
>  #endif
> +#ifdef __KERNEL__
>  	elf_gregset_t pr_reg;	/* GP registers */
> +#endif /* __KERNEL__ */
>  #ifdef CONFIG_BINFMT_ELF_FDPIC
>  	/* When using FDPIC, the loadmap addresses need to be communicated
>  	 * to GDB in order for GDB to do the necessary relocations.  The
> @@ -84,7 +88,7 @@ struct elf_prpsinfo
>  	unsigned long pr_flag;	/* flags */
>  	__kernel_uid_t	pr_uid;
>  	__kernel_gid_t	pr_gid;
> -	pid_t	pr_pid, pr_ppid, pr_pgrp, pr_sid;
> +	__kernel_pid_t	pr_pid, pr_ppid, pr_pgrp, pr_sid;
>  	/* Lots missing */
>  	char	pr_fname[16];	/* filename of executable */
>  	char	pr_psargs[ELF_PRARGSZ];	/* initial part of arg list */
> -- 
> 2.1.4
> 

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 98/98] HACK include/uapi/linux/errqueue.h: include time.h in userspace
  2015-05-30 15:39 ` [PATCH 98/98] HACK include/uapi/linux/errqueue.h: include time.h " Mikko Rapeli
@ 2015-10-06 19:56   ` Mikko Rapeli
  0 siblings, 0 replies; 143+ messages in thread
From: Mikko Rapeli @ 2015-10-06 19:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: David S. Miller, Willem de Bruijn, linux-api

Hi,

On Sat, May 30, 2015 at 05:39:30PM +0200, Mikko Rapeli wrote:
> linux/time.h conflicts with userspace header time.h. Try to be compatible
> for kernel and userspace.

Any comments about this change? I assume the <linux/time.h> and <time.h>
incompatibility in userspace is a known thing and the resulting definitions
are compatible.

-Mikko

> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/linux/errqueue.h | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/include/uapi/linux/errqueue.h b/include/uapi/linux/errqueue.h
> index 6b1cdc6..b310b2c 100644
> --- a/include/uapi/linux/errqueue.h
> +++ b/include/uapi/linux/errqueue.h
> @@ -2,7 +2,12 @@
>  #define _UAPI_LINUX_ERRQUEUE_H
>  
>  #include <linux/types.h>
> +
> +#ifdef __KERNEL__
>  #include <linux/time.h>
> +#else
> +#include <time.h>
> +#endif /* __KERNEL__ */
>  
>  struct sock_extended_err {
>  	__u32	ee_errno;	
> -- 
> 2.1.4
> 

^ permalink raw reply	[flat|nested] 143+ messages in thread

* Re: [PATCH 03/98] drm.h: use __kernel_size_t instead of size_t
  2015-06-03 17:19   ` Emil Velikov
  2015-08-30 10:42     ` Mikko Rapeli
@ 2015-10-15  6:49     ` Daniel Vetter
  1 sibling, 0 replies; 143+ messages in thread
From: Daniel Vetter @ 2015-10-15  6:49 UTC (permalink / raw)
  To: Emil Velikov
  Cc: Mikko Rapeli, linux-api, Linux-Kernel@Vger. Kernel. Org, ML dri-devel

On Wed, Jun 03, 2015 at 06:19:48PM +0100, Emil Velikov wrote:
> On 30 May 2015 at 16:37, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> > Fixes userspace compilation error:
> >
> > drm/drm.h:132:2: error: unknown type name ‘size_t’
> >
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> > ---
> >  include/uapi/drm/drm.h | 8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h
> > index ff6ef62..b197650 100644
> > --- a/include/uapi/drm/drm.h
> > +++ b/include/uapi/drm/drm.h
> > @@ -129,11 +129,11 @@ struct drm_version {
> >         int version_major;        /**< Major version */
> >         int version_minor;        /**< Minor version */
> >         int version_patchlevel;   /**< Patch level */
> > -       size_t name_len;          /**< Length of name buffer */
> > +       __kernel_size_t name_len;         /**< Length of name buffer */
> >         char __user *name;        /**< Name of driver */
> > -       size_t date_len;          /**< Length of date buffer */
> > +       __kernel_size_t date_len;         /**< Length of date buffer */
> >         char __user *date;        /**< User-space buffer to hold date */
> > -       size_t desc_len;          /**< Length of desc buffer */
> > +       __kernel_size_t desc_len;         /**< Length of desc buffer */
> >         char __user *desc;        /**< User-space buffer to hold desc */
> >  };
> >
> > @@ -143,7 +143,7 @@ struct drm_version {
> >   * \sa drmGetBusid() and drmSetBusId().
> >   */
> >  struct drm_unique {
> > -       size_t unique_len;        /**< Length of unique */
> > +       __kernel_size_t unique_len;       /**< Length of unique */
> As the file is used by other platforms than Linux this change will
> break them. Can you add a typedef similar to how __u8 and friends are
> handled at the top of the file.

This file isn't used by anyone else than Linus since years. All of the
typedefs can be nuked imo.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 143+ messages in thread

end of thread, other threads:[~2015-10-15  6:46 UTC | newest]

Thread overview: 143+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
2015-05-30 15:37 ` [PATCH 01/98] headers_install.sh: enhance error handling Mikko Rapeli
2015-05-30 15:37 ` [PATCH 02/98] scripts/headers_compile_test.sh: compile test script for exported headers Mikko Rapeli
2015-05-30 15:37 ` [PATCH 03/98] drm.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-06-03 17:19   ` Emil Velikov
2015-08-30 10:42     ` Mikko Rapeli
2015-10-15  6:49     ` Daniel Vetter
2015-05-30 15:37 ` [PATCH 04/98] drm_mode.h: use __u32 and __u64 from linux/types.h Mikko Rapeli
2015-05-30 19:58   ` Frans Klaver
2015-05-30 15:37 ` [PATCH 05/98] exynos_drm.h: use " Mikko Rapeli
2015-05-30 16:46   ` Russell King - ARM Linux
2015-06-01  8:20     ` Christian König
2015-06-01  8:56       ` Russell King - ARM Linux
2015-06-01  9:08         ` Christian König
2015-06-01  9:14           ` Frans Klaver
2015-06-01  9:38           ` Russell King - ARM Linux
2015-06-01  9:51             ` Christian König
2015-06-01  9:15       ` Mikko Rapeli
2015-06-02 18:59     ` Mikko Rapeli
2015-05-30 15:37 ` [PATCH 06/98] nouveau_drm.h: use __u32 and " Mikko Rapeli
2015-05-30 15:37 ` [PATCH 07/98] radeon_drm.h: " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 08/98] r128_drm.h: include drm/drm.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 09/98] via_drm.h: include linux/types.h instead of non-existing via_drmclient.h Mikko Rapeli
2015-06-03 17:16   ` Emil Velikov
2015-06-04 11:34     ` Emil Velikov
2015-05-30 15:38 ` [PATCH 10/98] via_drm.h: hide struct via_file_private in userspace Mikko Rapeli
2015-06-03 16:50   ` Emil Velikov
2015-09-02 19:17     ` Mikko Rapeli
2015-05-30 15:38 ` [PATCH 11/98] savage_drm.h: include <drm/drm.h> Mikko Rapeli
2015-05-30 15:38 ` [PATCH 12/98] sis_drm.h: hide sis_file_private in userspace Mikko Rapeli
2015-05-30 15:38 ` [PATCH 13/98] drm/i810_drm.h: include drm/drm.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 14/98] include/uapi/drm/vmwgfx_drm.h: use __s32, __u32 and __u64 from linux/types.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 15/98] include/uapi/drm/qxl_drm.h: " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 16/98] include/uapi/drm/msm_drm.h: use __s32, __s64, " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 17/98] include/uapi/linux/agpgart.h: include stdlib.h in userspace Mikko Rapeli
2015-05-30 15:38 ` [PATCH 18/98] include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP etc macros Mikko Rapeli
2015-05-31  7:18   ` Takashi Iwai
2015-05-31  8:12     ` Takashi Iwai
2015-06-02 19:08       ` Mikko Rapeli
2015-05-30 15:38 ` [PATCH 19/98] dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 20/98] hsi_char.h: use __u32 " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 21/98] include/uapi/linux/hsi/cs-protocol.h: include linux/time.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 22/98] ebtables.h: use __u64 from linux/types.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 23/98] cld.h: use __u8, __u16, __s16, __u32 and __s64 " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 24/98] rds.h: " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 25/98] sctp.h: use __u8 and __u32 " Mikko Rapeli
2015-06-01 13:40   ` Neil Horman
2015-05-30 15:38 ` [PATCH 26/98] scsi_bsg_fc.h: use __u8, __u32 and __u64 " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 27/98] scsi_netlink.h: use __u8, __u16 " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 28/98] scsi_netlink_fc.h: use __u16, __u32 " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 29/98] scsi_netlink_fc.h: include stdint.h in userspace Mikko Rapeli
2015-05-30 20:17   ` Frans Klaver
2015-06-02 19:14     ` Mikko Rapeli
2015-05-30 15:38 ` [PATCH 30/98] hdspm.h: use __u8, __u32 and __u64 from linux/types.h Mikko Rapeli
2015-05-31  7:11   ` Takashi Iwai
2015-06-02 19:18     ` Mikko Rapeli
2015-05-30 15:38 ` [PATCH 31/98] gntalloc.h: use __u16, " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 32/98] gntdev.h: use " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 33/98] include/uapi/linux/sysctl.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-05-30 15:38 ` [PATCH 34/98] include/uapi/asm-generic/ipcbuf.h: include linux/posix_types.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 35/98] include/uapi/asm-generic/msgbuf.h: include asm/ipcbuf.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 36/98] include/uapi/asm-generic/shmbuf.h: include fixes Mikko Rapeli
2015-05-30 15:38 ` [PATCH 37/98] asm-generic/sembuf.h: include asm/posix_types.h and asm/ipcbuf.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 38/98] include/uapi/asm-generic/signal.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-05-30 15:38 ` [PATCH 39/98] include/uapi/linux/socket.h: include sys/socket.h in userspace Mikko Rapeli
2015-05-30 15:38 ` [PATCH 40/98] include/uapi/linux/rds.h: include linux/socket.h and linux/types.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 41/98] include/uapi/linux/if_pppox.h: include linux/if.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 42/98] include/uapi/linux/if_tunnel.h: include linux/if.h, linux/ip.h and linux/in6.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 43/98] include/uapi/linux/hdlc/ioctl.h: include linux/if.h Mikko Rapeli
2015-05-30 20:22   ` Frans Klaver
2015-06-02 19:34     ` Mikko Rapeli
2015-05-30 15:38 ` [PATCH 44/98] nf_conntrack_tuple_common.h: include linux/types.h and linux/netfilter.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 45/98] include/uapi/linux/ipv6_route.h: include linux/in6.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 46/98] " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 47/98] include/uapi/linux/if_pppol2tp.h: include linux/in.h and linux/in6.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 48/98] include/uapi/linux/if_pppox.h: " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 49/98] Break dependency loop between linux/if.h and linux/hdlc/ioctl.h Mikko Rapeli
2015-05-30 19:52   ` Frans Klaver
2015-05-30 15:38 ` [PATCH 50/98] include/uapi/linux/packet_diag.h: include linux/netdevice.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 51/98] include/uapi/linux/llc.h: include linux/if.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 52/98] include/uapi/linux/mqueue.h: include linux/types.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 53/98] include/uapi/linux/mroute.h: include linux/in.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 54/98] include/uapi/linux/dlm_netlink.h: include linux/dlmconstants.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 55/98] include/uapi/linux/ip6_tunnel.h: include linux/if.h and linux/in6.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 56/98] include/uapi/linux/netfilter.h: include in.h and in6.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 57/98] include/uapi/linux/netfilter_bridge.h: include in.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 58/98] include/uapi/linux/netfilter_ipv4/ip_tables.h: include linux/if.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 59/98] include/uapi/linux/netfilter: include linux/if.h in several headers Mikko Rapeli
2015-05-30 15:38 ` [PATCH 60/98] include/uapi/linux/netfilter/xt_osf.h: include linux/ip.h and linux/tcp.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 61/98] include/uapi/linux/netfilter_ipv6/ip6t_rt.h: include linux/in6.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 62/98] include/uapi/linux/netfilter_bridge/ebt_ip6.h: " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 63/98] include/uapi/linux/netfilter/xt_policy.h: include linux/in.h and linux/in6.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 64/98] include/uapi/linux/netfilter_bridge/ebt_arp.h: include linux/if_ether.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 65/98] include/uapi/linux/netfilter_bridge/ebt_arpreply.h: " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 66/98] include/uapi/linux/netfilter_bridge/ebt_nat.h: " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 67/98] include/uapi/linux/netfilter/ipset/ip_set_bitmap.h: include linux/netfilter/ipset/ip_set.h Mikko Rapeli
2015-05-31 18:15   ` Jozsef Kadlecsik
2015-06-02 19:42     ` Mikko Rapeli
2015-05-30 15:39 ` [PATCH 68/98] include/uapi/linux/netfilter/ipset/ip_set_hash.h: " Mikko Rapeli
2015-05-30 15:39 ` [PATCH 69/98] include/uapi/linux/netfilter/ipset/ip_set_list.h: " Mikko Rapeli
2015-05-30 15:39 ` [PATCH 70/98] include/uapi/linux/netfilter/xt_HMARK.h: include linux/netfilter.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 71/98] include/uapi/linux/netfilter/xt_TEE.h: " Mikko Rapeli
2015-05-30 15:39 ` [PATCH 72/98] include/uapi/linux/netfilter/xt_TPROXY.h: " Mikko Rapeli
2015-05-30 15:39 ` [PATCH 73/98] include/uapi/linux/netfilter/xt_ipvs.h: " Mikko Rapeli
2015-05-30 15:39 ` [PATCH 74/98] include/uapi/linux/netfilter/xt_mac.h: include linux/if_ether.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 75/98] include/uapi/linux/netfilter/xt_sctp.h: use _Bool type, 1 for true and 0 for false Mikko Rapeli
2015-05-30 15:39 ` [PATCH 76/98] include/uapi/linux/netfilter/xt_recent.h: include linux/netfilter.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 77/98] include/uapi/linux/errqueue.h: include linux/time.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 78/98] include/uapi/asm-generic/ucontext.h: include asm/signal.h and asm/sigcontext.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 79/98] arch/x86/include/uapi/asm/signal.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-05-30 15:39 ` [PATCH 80/98] include/uapi/linux/auto_fs.h: include linux/limits.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 81/98] include/uapi/linux/openvswitch.h: use __u32 from linux/types.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 82/98] include/uapi/linux/target_core_user.h: use __u8, __u16, __u32 and __u64 " Mikko Rapeli
2015-05-30 15:39 ` [PATCH 83/98] include/uapi/linux/omapfb.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-05-30 15:39 ` [PATCH 84/98] include/uapi/linux/atm_zatm.h: include linux/time.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 85/98] include/uapi/linux/scc.h: include linux/sockios.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 86/98] include/uapi/linux/btrfs.h: define NULL Mikko Rapeli
2015-05-30 15:39 ` [PATCH 87/98] include/uapi/linux/kexec.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-05-30 15:39 ` [PATCH 88/98] include/uapi/linux/reiserfs_xattr.h: " Mikko Rapeli
2015-05-30 15:39 ` [PATCH 89/98] include/uapi/linux/patchkey.h: change #error to #warning if file included directly Mikko Rapeli
2015-05-30 15:39 ` [PATCH 90/98] include/uapi/linux/coda.h: use __kernel_pid_t and add u_short etc definitions for userspace Mikko Rapeli
2015-05-30 15:39 ` [PATCH 91/98] include/uapi/linux/android/binder.h: use __kernel_pid_t and __kernel_uid_t Mikko Rapeli
2015-05-30 15:39 ` [PATCH 92/98] arch/x86/include/uapi/asm/sembuf.h: include linux/types.h and linux/ipc.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 93/98] include/uapi/linux/virtio_balloon.h: include linux/virtio_types.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 94/98] HACK arch/x86/include/uapi/asm/sigcontext32.h: remove _fpx_sw_bytes from union Mikko Rapeli
2015-09-02 19:34   ` Mikko Rapeli
2015-09-03  7:42     ` [PATCH] x86/headers: Fix (old) header file dependency bug in uapi/asm/sigcontext32.h Ingo Molnar
2015-09-04  7:10       ` Mikko Rapeli
2015-09-04  8:58         ` Ingo Molnar
2015-09-04 12:18           ` Mikko Rapeli
2015-09-05  7:32             ` Ingo Molnar
2015-05-30 15:39 ` [PATCH 95/98] HACK: fix include/uapi/xen/privcmd.h compilation in userspace Mikko Rapeli
2015-05-30 17:56   ` [Xen-devel] " Andrew Cooper
2015-09-10 19:46     ` Mikko Rapeli
2015-05-30 15:39 ` [PATCH 96/98] HACK include/uapi/linux/coda_psdev.h: fix " Mikko Rapeli
2015-05-31 11:19   ` Jan Harkes
2015-09-10 19:48     ` Mikko Rapeli
2015-05-30 15:39 ` [PATCH 97/98] HACK include/uapi/linux/elfcore.h: use __kernel_pid_t and remove elf_greg_t stuff " Mikko Rapeli
2015-10-06 19:20   ` Mikko Rapeli
2015-05-30 15:39 ` [PATCH 98/98] HACK include/uapi/linux/errqueue.h: include time.h " Mikko Rapeli
2015-10-06 19:56   ` Mikko Rapeli
2015-05-30 20:12 ` [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Richard Weinberger
2015-05-31  4:05   ` Mikko Rapeli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).