Merge remote-tracking branch 'strace/master' into HEAD

Change-Id: I818627080b47fdadcd619d6220579fecbb6bc28c
diff --git a/.gitignore b/.gitignore
index 9d6703e..596f363 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,9 +39,6 @@
 /ioctls_all[012].h
 /ioctlsort[012]
 
-/sen.h
-/sys_func.h
-
 /strace-*.tar.xz
 
 /tests-m32
@@ -49,17 +46,9 @@
 
 /libmpers-m32.a
 /libmpers-mx32.a
-/m32_funcs.h
-/m32_printer_decls.h
-/m32_printer_defs.h
-/m32_type_defs.h
 /mpers-m32
 /mpers-m32.stamp
 /mpers-mx32
 /mpers-mx32.stamp
 /mpers.am
-/mpers_xlat.h
-/mx32_funcs.h
-/mx32_printer_decls.h
-/mx32_printer_defs.h
-/mx32_type_defs.h
+/*.mpers.i
diff --git a/.travis.yml b/.travis.yml
index e70329a..6a77b21 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -22,7 +22,7 @@
 
 env:
   global:
-    - SLEEP_A_BIT="sleep 0.1"
+    - SLEEP_A_BIT="sleep 0.2"
     - VERBOSE="1"
   matrix:
     - TARGET=x86_64
diff --git a/Android.mk b/Android.mk
index 9116204..51e7751 100644
--- a/Android.mk
+++ b/Android.mk
@@ -36,7 +36,7 @@
 # We don't currently have a good solution for the 'configure' side of things.
 # You can get a list of the HAVE_* variables in use and manually go through it:
 #
-#   find . -name "*.[ch]" | xargs grep HAVE_ | sed 's/.*\(HAVE_[A-Z0-9_]*\).*/\1/p' | sort | uniq -d
+#   find . -name "*.[ch]" | xargs grep HAVE_ | sed 's/.*\(HAVE_[A-Z0-9_]*\).*/\1/p' | grep -v HAVE_DECL_ | sort | uniq -d
 
 # -------------------------------------------------------------------------
 
@@ -51,6 +51,7 @@
     bjm.c \
     block.c \
     bpf.c \
+    btrfs.c \
     cacheflush.c \
     capability.c \
     chdir.c \
@@ -62,6 +63,7 @@
     dirent.c \
     dirent64.c \
     epoll.c \
+    evdev.c \
     eventfd.c \
     execve.c \
     exit.c \
@@ -72,14 +74,20 @@
     fcntl.c \
     fetch_seccomp_fprog.c \
     fetch_struct_flock.c \
+    fetch_struct_statfs.c \
     file.c \
     file_handle.c \
+    file_ioctl.c \
     flock.c \
+    fstatfs.c \
+    fstatfs64.c \
+    fs_x_ioctl.c \
     futex.c \
     getcpu.c \
     getcwd.c \
     getrandom.c \
     get_robust_list.c \
+    hdio.c \
     hostname.c \
     inotify.c \
     io.c \
@@ -108,6 +116,7 @@
     mq.c \
     mtd.c \
     net.c \
+    numa.c \
     open.c \
     pathtrace.c \
     perf.c \
@@ -117,6 +126,7 @@
     print_mq_attr.c \
     print_msgbuf.c \
     print_sigevent.c \
+    print_statfs.c \
     print_time.c \
     print_timex.c \
     printmode.c \
@@ -144,9 +154,11 @@
     socketutils.c \
     sram_alloc.c \
     statfs.c \
+    statfs64.c \
     strace.c \
     swapon.c \
     sync_file_range.c \
+    sync_file_range2.c \
     syscall.c \
     sysctl.c \
     sysinfo.c \
@@ -156,6 +168,7 @@
     time.c \
     times.c \
     truncate.c \
+    ubi.c \
     uid16.c \
     uid.c \
     umask.c \
@@ -174,10 +187,7 @@
 
 LOCAL_SHARED_LIBRARIES :=
 
-LOCAL_CFLAGS := \
-    -DGETGROUPS_T=gid_t \
-    -DHAVE_ASM_SIGCONTEXT_H=1 \
-    -DHAVE_DECL_PTRACE_EVENT_FORK=1 \
+#    -DHAVE_DECL_PTRACE_EVENT_FORK=1 \
     -DHAVE_DECL_PTRACE_EVENT_VFORK=1 \
     -DHAVE_DECL_PTRACE_EVENT_CLONE=1 \
     -DHAVE_DECL_PTRACE_EVENT_EXEC=1 \
@@ -197,17 +207,36 @@
     -UHAVE_DECL_LO_FLAGS_AUTOCLEAR \
     -UHAVE_DECL_LO_FLAGS_PARTSCAN \
     -DHAVE_DECL_SYS_ERRLIST=1 \
+
+LOCAL_CFLAGS := \
+    -DGETGROUPS_T=gid_t \
+    \
+    -UHAVE_ASM_CACHECTL_H \
+    -DHAVE_ASM_SIGCONTEXT_H=1 \
+    -DHAVE_BLKGETSIZE64=1 \
+    -UHAVE_BLUETOOTH_BLUETOOTH_H \
+    -DHAVE___BUILTIN_POPCOUNT=1 \
+    -DHAVE_DIRENT_H=1 \
+    -DHAVE_DLADDR=1 \
     -DHAVE_ELF_H=1 \
     -DHAVE_FOPEN64=1 \
     -DHAVE_FORK=1 \
+    -DHAVE_FSTATAT=1 \
+    -DHAVE_FTRUNCATE=1 \
+    -DHAVE_FUTIMENS=1 \
     -DHAVE_IF_INDEXTONAME=1 \
     -DHAVE_INET_NTOP=1 \
-    -DHAVE_LINUX_CAPABILITY_H=1 \
+    -DHAVE_INET_PTON=1 \
+    -DHAVE_INTTYPES_H=1 \
+    -DHAVE_LINUX_BPF_H=1 \
+    -DHAVE_LINUX_BSG_H=1 \
+    -DHAVE_LINUX_BTRFS_H=1 \
     -DHAVE_LINUX_FALLOC_H=1 \
     -DHAVE_LINUX_FILTER_H=1 \
     -DHAVE_LINUX_FUTEX_H=1 \
     -DHAVE_LINUX_ICMP_H=1 \
     -DHAVE_LINUX_IF_PACKET_H=1 \
+    -DHAVE_LINUX_INPUT_H=1 \
     -DHAVE_LINUX_IN6_H=1 \
     -DHAVE_LINUX_IPC_H=1 \
     -DHAVE_LINUX_MQUEUE=1 \
@@ -234,6 +263,7 @@
     -DHAVE_STATFS64=1 \
     -DHAVE_STDBOOL_H=1 \
     -DHAVE_STRERROR=1 \
+    -DHAVE_STRUCT_BTRFS_IOCTL_FEATURE_FLAGS_COMPAT_FLAGS=1 \
     -DHAVE_STRUCT_FLOCK=1 \
     -DHAVE_STRUCT_FLOCK64=1 \
     -DHAVE_STRUCT_MMSGHDR=1 \
@@ -260,6 +290,9 @@
     -DHAVE_SYS_REG_H=1 \
     -DHAVE_SYS_VFS_H=1 \
     -DHAVE_SYS_XATTR_H=1 \
+    -DHAVE_UNISTD_H=1 \
+    -DHAVE_UTIMENSAT=1 \
+    \
     -DMAJOR_IN_SYSMACROS \
     -DPACKAGE_NAME='"strace"' \
     -DVERSION='"$(strace_version)"' \
diff --git a/Makefile.am b/Makefile.am
index e15c2d9..77e0cc8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -64,6 +64,12 @@
 libstrace_a_CPPFLAGS = $(strace_CPPFLAGS)
 libstrace_a_CFLAGS = $(strace_CFLAGS)
 libstrace_a_SOURCES =	\
+	fstatfs.c \
+	fstatfs64.c \
+	statfs.c \
+	statfs64.c \
+	sync_file_range.c \
+	sync_file_range2.c \
 	upeek.c		\
 	# end of libstrace_a_SOURCES
 
@@ -75,6 +81,7 @@
 	bjm.c		\
 	block.c		\
 	bpf.c		\
+	btrfs.c		\
 	cacheflush.c	\
 	capability.c	\
 	caps0.h		\
@@ -101,8 +108,11 @@
 	fcntl.c		\
 	fetch_seccomp_fprog.c \
 	fetch_struct_flock.c \
+	fetch_struct_statfs.c \
 	file.c		\
 	file_handle.c	\
+	file_ioctl.c	\
+	fs_x_ioctl.c	\
 	flock.c		\
 	flock.h		\
 	futex.c		\
@@ -111,6 +121,7 @@
 	getcpu.c	\
 	getcwd.c	\
 	getrandom.c	\
+	hdio.c		\
 	hostname.c	\
 	inotify.c	\
 	io.c		\
@@ -145,6 +156,7 @@
 	mtd.c		\
 	native_defs.h	\
 	net.c		\
+	numa.c		\
 	open.c		\
 	or1k_atomic.c	\
 	pathtrace.c	\
@@ -155,6 +167,7 @@
 	print_mq_attr.c	\
 	print_msgbuf.c	\
 	print_sigevent.c \
+	print_statfs.c	\
 	print_time.c	\
 	print_timex.c	\
 	printmode.c	\
@@ -188,9 +201,9 @@
 	socketutils.c	\
 	sram_alloc.c	\
 	statfs.c	\
+	statfs.h	\
 	strace.c	\
 	swapon.c	\
-	sync_file_range.c \
 	syscall.c	\
 	sysctl.c	\
 	sysinfo.c	\
@@ -200,6 +213,7 @@
 	time.c		\
 	times.c		\
 	truncate.c	\
+	ubi.c		\
 	uid.c		\
 	uid16.c		\
 	umask.c		\
@@ -213,6 +227,7 @@
 	vsprintf.c	\
 	wait.c		\
 	xattr.c		\
+	xlat.h		\
 	xmalloc.c	\
 	# end of strace_SOURCES
 
@@ -224,9 +239,9 @@
 endif
 
 @CODE_COVERAGE_RULES@
-CODE_COVERAGE_LCOV_OPTIONS = \
-	$(CODE_COVERAGE_LCOV_OPTIONS_DEFAULT) --rc lcov_branch_coverage=1
-CODE_COVERAGE_GENHTML_OPTIONS = --rc lcov_branch_coverage=1
+CODE_COVERAGE_BRANCH_COVERAGE = 1
+CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \
+	--prefix $(shell realpath -Ls $(abs_top_srcdir)/..)
 CODE_COVERAGE_IGNORE_PATTERN = '/usr/include/*'
 strace_CPPFLAGS += $(CODE_COVERAGE_CPPFLAGS)
 strace_CFLAGS += $(CODE_COVERAGE_CFLAGS)
@@ -426,6 +441,7 @@
 	linux/mips/syscallent.h		\
 	linux/mips/userent.h		\
 	linux/mtd-abi.h			\
+	linux/netlink_diag.h		\
 	linux/nios2/arch_regs.c		\
 	linux/nios2/get_error.c		\
 	linux/nios2/get_scno.c		\
@@ -641,7 +657,8 @@
 $(srcdir)/.version:
 	$(AM_V_GEN)echo $(VERSION) > $@-t && mv $@-t $@
 
-strace_SOURCES_c = $(filter %.c,$(strace_SOURCES))
+strace_SOURCES_c = \
+	$(filter %.c,$(strace_SOURCES)) $(filter %.c,$(libstrace_a_SOURCES))
 
 sys_func.h: $(patsubst %,$(srcdir)/%,$(strace_SOURCES_c))
 	for f in $^; do \
@@ -682,6 +699,15 @@
 
 ioctls_inc_h = $(wildcard $(srcdir)/$(OS)/$(ARCH)/ioctls_inc*.h)
 ioctlent_h = $(patsubst $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%,ioctlent%,$(ioctls_inc_h))
+ioctl_redefs_h = $(filter-out ioctl_redefs0.h,$(subst ioctlent,ioctl_redefs,$(ioctlent_h)))
+
+ioctl_redefs%.h: ioctlent%.h ioctlent0.h
+	sort $< > $<-t
+	sort ioctlent0.h | comm -23 $<-t - | \
+		sed -n 's/^{ "\([^"]\+\)", \(0x[[:xdigit:]]\+\) },$$/#ifdef \1\n# undef \1\n# define \1 \2\n#endif/p' \
+		> $@-t
+	rm -f $<-t
+	mv $@-t $@
 
 ioctlent%.h: ioctlsort%
 	./$< > $@
@@ -695,13 +721,16 @@
 ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h
 	cat $^ > $@
 
-BUILT_SOURCES = $(ioctlent_h) native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h .version
-CLEANFILES    = $(ioctlent_h) native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h
+BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) \
+		native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h .version
+CLEANFILES    = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \
+		native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h
 DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h
 
 # defines mpers_source_files
 include mpers.am
 srcdir_mpers_source_files = $(patsubst %,$(srcdir)/%,$(mpers_source_files))
+mpers_preproc_files = $(mpers_source_files:.c=.c.mpers.i)
 
 mpers_NAME =
 mpers_PREFIX = $(mpers_NAME)_
@@ -729,6 +758,7 @@
 	echo '#undef MPERS_PRINTER_NAME' >> $@-t
 	echo '#define MPERS_PRINTER_NAME(printer_name) printer_name' >> $@-t
 	echo '#include "$(mpers_PREFIX)printer_decls.h"' >> $@-t
+	echo '#include MPERS_$(mpers_PREFIX)IOCTL_MACROS' >> $@-t
 	mv $@-t $@
 
 m%_funcs.h: $(srcdir_mpers_source_files)
@@ -740,28 +770,36 @@
 
 # printers
 
-printers.h: $(srcdir_mpers_source_files)
+%.c.mpers.i: $(srcdir)/%.c
+	$(CPP) -P $(mpers_sh_opts) -DIN_MPERS_BOOTSTRAP $< -o $@
+
+mpers_printer_decl_pattern = ^MPERS_PRINTER_DECL(\([^,)]\+\),[[:space:]]*\([^,)]\+\),[[:space:]]*\([^)]\+\))$$
+
+printers.h: $(mpers_preproc_files)
 	echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
 	echo 'typedef struct {' >> $@-t
 	for f in $^; do \
-		sed -n 's/^MPERS_PRINTER_DECL(\([^,]\+\),[[:space:]]*\([^)]\+\))\(.*\)/ \1 (*\2) \3;\n#define \2 MPERS_PRINTER_NAME(\2)\n/p' $$f || exit; \
+		sed -n 's/$(mpers_printer_decl_pattern)/ \1 (*\2)(\3);\n#define \2 MPERS_PRINTER_NAME(\2)\n/p' $$f \
+		|| exit; \
 	done >> $@-t
 	echo '} struct_printers;' >> $@-t
 	echo 'extern const struct_printers *printers;' >> $@-t
 	echo '#define MPERS_PRINTER_NAME(printer_name) printers->printer_name' >> $@-t
 	mv $@-t $@
 
-%_printer_decls.h: $(srcdir_mpers_source_files)
+%_printer_decls.h: $(mpers_preproc_files)
 	echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
 	for f in $^; do \
-		sed -n 's/^MPERS_PRINTER_DECL(\([^,]\+\),[[:space:]]*\([^)]\+\))\(.*\)/extern \1 $(mpers_PREFIX)\2\3;/p' $$f || exit; \
+		sed -n 's/$(mpers_printer_decl_pattern)/extern \1 $(mpers_PREFIX)\2(\3);/p' $$f \
+		|| exit; \
 	done >> $@-t
 	mv $@-t $@
 
-%_printer_defs.h: $(srcdir_mpers_source_files)
+%_printer_defs.h: $(mpers_preproc_files)
 	echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
 	for f in $^; do \
-		sed -n 's/^MPERS_PRINTER_DECL(\([^,]\+\),[[:space:]]*\([^)]\+\))\(.*\)/\.\2 = $(mpers_PREFIX)\2,/p' $$f || exit; \
+		sed -n 's/$(mpers_printer_decl_pattern)/\.\2 = $(mpers_PREFIX)\2,/p' $$f \
+		|| exit; \
 	done >> $@-t
 	mv $@-t $@
 
diff --git a/NEWS b/NEWS
index 4cd5677..4ffc90c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,23 +1,38 @@
-Noteworthy changes in release ?.?? (????-??-??)
+Noteworthy changes in release 4.12 (2016-05-31)
 ===============================================
 
 * Improvements
   * Implemented simultaneous use of -p option and tracing of a command.
     (addresses Debian bug #549942).
-  * Enhanced decoding of personality, sched_getaffinity,
-    and sched_setaffinity syscalls.
-  * Enhanced decoding of getxpid, getxuid, and getxgid syscalls on alpha.
-  * Added decoding of bind, listen, and setsockopt direct syscalls on sparc.
   * Implemented caching of netlink conversations to reduce amount of time
     spent in decoding socket details in -yy mode.
-  * Implemented decoding of copy_file_range syscall.
-  * Implemented dumping of preadv, pwritev, and vmsplice syscalls.
-  * Updated lists of ioctl commands from Linux 4.5.
+  * Implemented -yy mode decoding of protocol:portid pairs associated with
+    netlink socket descriptors.
+  * Implemented decoding of copy_file_range, preadv2, and pwritev2 syscalls.
+  * Implemented dumping of preadv, preadv2, pwritev, pwritev2, and vmsplice
+    syscalls.
+  * Implemented decoding of BTRFS_* and UFFDIO_* ioctl commands.
+  * Enhanced decoding of BLK*, EVIOC*, RTC_*, and VIDIOC_* ioctl commands.
+  * Enhanced decoding of fstatfs, fstatfs64, get_mempolicy, getdents,
+    getdents64, getgroups, getpriority, kill, mbind, migrate_pages, mknod,
+    mknodat, personality, poll, ppoll, quotactl, rt_sigpending,
+    rt_sigqueueinfo, rt_sigtimedwait, rt_tgsigqueueinfo, sched_getaffinity,
+    sched_setaffinity, seccomp, set_mempolicy, setgroups, setpriority, statfs,
+    statfs64, tgkill, waitid, and xattr family syscalls.
+  * Enhanced decoding of getxpid, getxuid, and getxgid syscalls on alpha.
+  * Enhanced decoding of pipe syscall on alpha, ia64, mips, sh, and sparc.
+  * Added decoding of bind, listen, and setsockopt direct syscalls on sparc.
+  * Added decoding of osf_statfs64 and osf_fstatfs64 syscalls on alpha.
+  * Added decoding of fadvise64 and fadvise64_64 on s390.
+  * Updated lists of AF_*, BPF_MAP_TYPE_*, CLONE_*, EPOLL*, IPV6_*, MADV_*,
+    MSG_*, PTRACE_*, SEGV_*, SO_*, SOL_*, *_MAGIC, and quotactl constants.
+  * Updated lists of ioctl commands from Linux 4.6.
 
 * Bug fixes
   * Fixed build on arc, metag, nios2, or1k, and tile architectures.
   * Fixed decoding of 32-bit times syscall return value on 64-bit architectures.
   * Fixed decoding of mlock2 syscall on sparc.
+  * Fixed decoding of osf_shmat syscall on alpha.
   * Fixed decoding of syscalls unknown to the kernel on s390/s390x.
     (addresses Debian bug #485979 and Fedora bug #1298294).
   * Fixed decoding of preadv syscall in case of short read.
@@ -26,6 +41,7 @@
   * Fixed decoding of mincore syscall's last argument.
   * Fixed remaining errors in mapping between syscall numbers and numbers
     of syscall arguments.
+  * Applied various fixes to strace-graph script.
 
 Noteworthy changes in release 4.11 (2015-12-21)
 ===============================================
diff --git a/README-mpers b/README-mpers
index 8ae418d..ad1ca18 100644
--- a/README-mpers
+++ b/README-mpers
@@ -8,7 +8,7 @@
 (containing definitions of these types or other behaviour-affecting
 defines);
 * printers should be defined
-as MPERS_PRINTER_DECL(return_type, function_name)(args),
+as MPERS_PRINTER_DECL(return_type, function_name, args),
 inside files that include MPERS_DEFS these printers should be called
 as MPERS_FUNC_NAME(function_name)(args), in other files
 they should be called just as function_name(args).
diff --git a/aio.c b/aio.c
index 1cbd533..e02af7d 100644
--- a/aio.c
+++ b/aio.c
@@ -154,52 +154,54 @@
 	}
 }
 
+static bool
+print_iocbp(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
+{
+	unsigned long addr;
+	struct iocb cb;
+
+	if (elem_size < sizeof(long)) {
+		addr = * (unsigned int *) elem_buf;
+	} else {
+		addr = * (unsigned long *) elem_buf;
+	}
+
+	tprints("{");
+	if (!umove_or_printaddr(tcp, addr, &cb))
+		print_iocb(tcp, &cb);
+	tprints("}");
+
+	return true;
+}
+
 SYS_FUNC(io_submit)
 {
-	long nr = tcp->u_arg[1];
-	/* if nr <= 0, we end up printing just "[]" */
-	tprintf("%lu, %ld, [", tcp->u_arg[0], nr);
-	{
-		long i;
-		long iocbs = tcp->u_arg[2];
+	const long nr = widen_to_long(tcp->u_arg[1]);
+	const unsigned long addr = tcp->u_arg[2];
+	unsigned long iocbp;
 
-		for (i = 0; i < nr; ++i, iocbs += current_wordsize) {
-			unsigned long iocbp;
-			struct iocb cb;
+	tprintf("%lu, %ld, ", tcp->u_arg[0], nr);
 
-			if (i)
-				tprints(", ");
+	if (nr < 0)
+		printaddr(addr);
+	else
+		print_array(tcp, addr, nr, &iocbp, current_wordsize,
+			    umoven_or_printaddr, print_iocbp, 0);
 
-			if (umove_ulong_or_printaddr(tcp, iocbs, &iocbp)) {
-				/*
-				 * No point in trying to read the whole array
-				 * because nr can be ridiculously large.
-				 */
-				break;
-			}
-
-			tprints("{");
-			if (!umove_or_printaddr(tcp, iocbp, &cb))
-				print_iocb(tcp, &cb);
-			tprints("}");
-		}
-	}
-	tprints("]");
 	return RVAL_DECODED;
 }
 
-static int
-print_io_event(struct tcb *tcp, const long addr)
+static bool
+print_io_event(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
 {
-	struct io_event event;
+	struct io_event *event = elem_buf;
 
-	if (umove_or_printaddr(tcp, addr, &event))
-		return -1;
 	tprintf("{data=%#" PRIx64 ", obj=%#" PRIx64
 		", res=%" PRId64 ", res2=%" PRId64 "}",
-		(uint64_t) event.data, (uint64_t) event.obj,
-		(int64_t) event.res, (int64_t) event.res2);
-	return 0;
+		(uint64_t) event->data, (uint64_t) event->obj,
+		(int64_t) event->res, (int64_t) event->res2);
+
+	return true;
 }
 
 SYS_FUNC(io_cancel)
@@ -215,7 +217,10 @@
 		}
 		tprints(", ");
 	} else {
-		print_io_event(tcp, tcp->u_arg[2]);
+		struct io_event event;
+
+		if (!umove_or_printaddr(tcp, tcp->u_arg[2], &event))
+			print_io_event(tcp, &event, sizeof(event), 0);
 	}
 	return 0;
 }
@@ -224,26 +229,14 @@
 {
 	if (entering(tcp)) {
 		tprintf("%lu, %ld, %ld, ",
-			tcp->u_arg[0], tcp->u_arg[1], tcp->u_arg[2]);
+			tcp->u_arg[0],
+			widen_to_long(tcp->u_arg[1]),
+			widen_to_long(tcp->u_arg[2]));
 	} else {
-		if (tcp->u_rval == 0) {
-			tprints("[]");
-		} else {
-			struct io_event *events = (void *)tcp->u_arg[3];
-			long i, nr = tcp->u_rval;
-
-			for (i = 0; i < nr; i++, events++) {
-				if (i == 0)
-					tprints("[");
-				else
-					tprints(", ");
-
-				if (print_io_event(tcp, (long)events))
-					break;
-			}
-			tprints("], ");
-		}
-
+		struct io_event buf;
+		print_array(tcp, tcp->u_arg[3], tcp->u_rval, &buf, sizeof(buf),
+			    umoven_or_printaddr, print_io_event, 0);
+		tprints(", ");
 		/*
 		 * Since the timeout parameter is read by the kernel
 		 * on entering syscall, it has to be decoded the same way
diff --git a/alpha.c b/alpha.c
index e343b7e..70d4ca5 100644
--- a/alpha.c
+++ b/alpha.c
@@ -60,4 +60,24 @@
 	return decode_getxxid(tcp, "egid");
 }
 
+SYS_FUNC(osf_statfs)
+{
+	printpath(tcp, tcp->u_arg[0]);
+	tprints(", ");
+	printaddr(tcp->u_arg[1]);
+	tprints(", ");
+	tprintf("%lu", tcp->u_arg[2]);
+	return RVAL_DECODED;
+}
+
+SYS_FUNC(osf_fstatfs)
+{
+	printfd(tcp, tcp->u_arg[0]);
+	tprints(", ");
+	printaddr(tcp->u_arg[1]);
+	tprints(", ");
+	tprintf("%lu", tcp->u_arg[2]);
+	return RVAL_DECODED;
+}
+
 #endif /* ALPHA */
diff --git a/block.c b/block.c
index 1e02fa7..ac33c38 100644
--- a/block.c
+++ b/block.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2009, 2010 Jeff Mahoney <jeffm@suse.com>
+ * Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,16 +27,16 @@
  */
 
 #include "defs.h"
+
+#include DEF_MPERS_TYPE(struct_blk_user_trace_setup)
+#include DEF_MPERS_TYPE(struct_blkpg_ioctl_arg)
+#include DEF_MPERS_TYPE(struct_blkpg_partition)
+
 #include <linux/blkpg.h>
 #include <linux/fs.h>
-#include <linux/hdreg.h>
-
-/* ioctls <= 114 are present in Linux 2.4. The following ones have been
- * added since then and headers containing them may not be available on
- * every system. */
 
 #define BLKTRACE_BDEV_SIZE      32
-struct blk_user_trace_setup {
+typedef struct blk_user_trace_setup {
 	char name[BLKTRACE_BDEV_SIZE];	/* output */
 	uint16_t act_mask;		/* input */
 	uint32_t buf_size;		/* input */
@@ -43,10 +44,21 @@
 	uint64_t start_lba;
 	uint64_t end_lba;
 	uint32_t pid;
-};
+} struct_blk_user_trace_setup;
+
+typedef struct blkpg_ioctl_arg struct_blkpg_ioctl_arg;
+typedef struct blkpg_partition struct_blkpg_partition;
+
+#include MPERS_DEFS
+
+/*
+ * ioctl numbers <= 114 are present in Linux 2.4.  The following ones have been
+ * added since then and headers containing them may not be available on every
+ * system.
+ */
 
 #ifndef BLKTRACESETUP
-# define BLKTRACESETUP _IOWR(0x12,115,struct blk_user_trace_setup)
+# define BLKTRACESETUP _IOWR(0x12, 115, struct_blk_user_trace_setup)
 #endif
 #ifndef BLKTRACESTART
 # define BLKTRACESTART _IO(0x12,116)
@@ -84,13 +96,16 @@
 #ifndef BLKZEROOUT
 # define BLKZEROOUT _IO(0x12,127)
 #endif
+#ifndef BLKDAXGET
+# define BLKDAXGET _IO(0x12,129)
+#endif
 
 #include "xlat/blkpg_ops.h"
 
 static void
-print_blkpg_req(struct tcb *tcp, const struct blkpg_ioctl_arg *blkpg)
+print_blkpg_req(struct tcb *tcp, const struct_blkpg_ioctl_arg *blkpg)
 {
-	struct blkpg_partition p;
+	struct_blkpg_partition p;
 
 	tprints("{");
 	printxval(blkpg_ops, blkpg->op, "BLKPG_???");
@@ -100,7 +115,7 @@
 
 	if (!umove_or_printaddr(tcp, (long) blkpg->data, &p)) {
 		tprintf("{start=%lld, length=%lld, pno=%d, devname=",
-			p.start, p.length, p.pno);
+			(long long) p.start, (long long) p.length, p.pno);
 		print_quoted_string(p.devname, sizeof(p.devname),
 				    QUOTE_0_TERMINATED);
 		tprints(", volname=");
@@ -111,8 +126,8 @@
 	tprints("}");
 }
 
-int
-block_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
+MPERS_PRINTER_DECL(int, block_ioctl, struct tcb *tcp,
+		   const unsigned int code, const long arg)
 {
 	switch (code) {
 	/* take arg as a value, not as a pointer */
@@ -121,13 +136,6 @@
 		tprintf(", %lu", arg);
 		break;
 
-	/* take a signed int */
-	case BLKROSET:
-	case BLKBSZSET:
-		tprints(", ");
-		printnum_int(tcp, arg, "%d");
-		break;
-
 	/* return an unsigned short */
 	case BLKSECTGET:
 	case BLKROTATIONAL:
@@ -142,8 +150,13 @@
 	case BLKBSZGET:
 	case BLKSSZGET:
 	case BLKALIGNOFF:
+	case BLKDAXGET:
 		if (entering(tcp))
 			return 0;
+		/* fall through */
+	/* take a signed int */
+	case BLKROSET:
+	case BLKBSZSET:
 		tprints(", ");
 		printnum_int(tcp, arg, "%d");
 		break;
@@ -191,29 +204,12 @@
 	case BLKSECDISCARD:
 	case BLKZEROOUT:
 		tprints(", ");
-		printpair_int64(tcp, arg, "%" PRIx64);
+		printpair_int64(tcp, arg, "%" PRIu64);
 		break;
 
 	/* More complex types */
-	case HDIO_GETGEO:
-		if (entering(tcp))
-			return 0;
-		else {
-			struct hd_geometry geo;
-
-			tprints(", ");
-			if (!umove_or_printaddr(tcp, arg, &geo))
-				tprintf("{heads=%u, sectors=%u, "
-					"cylinders=%u, start=%lu}",
-					(unsigned)geo.heads,
-					(unsigned)geo.sectors,
-					(unsigned)geo.cylinders,
-					geo.start);
-		}
-		break;
-
 	case BLKPG: {
-		struct blkpg_ioctl_arg blkpg;
+		struct_blkpg_ioctl_arg blkpg;
 
 		tprints(", ");
 		if (!umove_or_printaddr(tcp, arg, &blkpg))
@@ -223,7 +219,7 @@
 
 	case BLKTRACESETUP:
 		if (entering(tcp)) {
-			struct blk_user_trace_setup buts;
+			struct_blk_user_trace_setup buts;
 
 			tprints(", ");
 			if (umove_or_printaddr(tcp, arg, &buts))
@@ -236,51 +232,23 @@
 				buts.end_lba, buts.pid);
 			return 1;
 		} else {
-			struct blk_user_trace_setup buts;
+			struct_blk_user_trace_setup buts;
 
-			if (syserror(tcp)) {
-				tprints("}");
-				break;
+			if (!syserror(tcp) && !umove(tcp, arg, &buts)) {
+				tprints(", name=");
+				print_quoted_string(buts.name, sizeof(buts.name),
+						    QUOTE_0_TERMINATED);
 			}
-			tprints(", ");
-			if (umove(tcp, arg, &buts) < 0) {
-				tprints("???}");
-				break;
-			}
-			tprints(", name=");
-			print_quoted_string(buts.name, sizeof(buts.name),
-					    QUOTE_0_TERMINATED);
 			tprints("}");
 			break;
 		}
 
-#ifdef FITRIM
-	/* First seen in linux-2.6.37 */
-	case FITRIM: {
-		struct fstrim_range fstrim;
-
-		tprints(", ");
-		if (!umove_or_printaddr(tcp, arg, &fstrim))
-			tprintf("{start=%#" PRIx64 ", "
-				"len=%#" PRIx64 ", "
-				"minlen=%#" PRIx64 "}",
-				(uint64_t) fstrim.start,
-				(uint64_t) fstrim.len,
-				(uint64_t) fstrim.minlen);
-		break;
-	}
-#endif
-
 	/* No arguments */
 	case BLKRRPART:
 	case BLKFLSBUF:
 	case BLKTRACESTART:
 	case BLKTRACESTOP:
 	case BLKTRACETEARDOWN:
-#ifdef FIFREEZE
-	case FIFREEZE:
-	case FITHAW:
-#endif
 		break;
 	default:
 		return RVAL_DECODED;
diff --git a/bpf.c b/bpf.c
index f7156f0..20070b3 100644
--- a/bpf.c
+++ b/bpf.c
@@ -83,7 +83,7 @@
 	printfd(tcp, attr.map_fd);
 	tprintf(", key=%#" PRIx64 ", value=%#" PRIx64 ", flags=",
 		attr.key, attr.value);
-	printxval(bpf_map_update_elem_flags, attr.flags, "BPF_???");
+	printxval64(bpf_map_update_elem_flags, attr.flags, "BPF_???");
 	tprints("}");
 }
 
diff --git a/btrfs.c b/btrfs.c
new file mode 100644
index 0000000..04c71fc
--- /dev/null
+++ b/btrfs.c
@@ -0,0 +1,1354 @@
+/*
+ * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "defs.h"
+
+#ifdef HAVE_LINUX_BTRFS_H
+
+#include DEF_MPERS_TYPE(struct_btrfs_ioctl_dev_replace_args)
+#include DEF_MPERS_TYPE(struct_btrfs_ioctl_send_args)
+#include DEF_MPERS_TYPE(struct_btrfs_ioctl_received_subvol_args)
+
+# include <linux/btrfs.h>
+
+typedef struct btrfs_ioctl_dev_replace_args
+	struct_btrfs_ioctl_dev_replace_args;
+typedef struct btrfs_ioctl_send_args
+	struct_btrfs_ioctl_send_args;
+typedef struct btrfs_ioctl_received_subvol_args
+	struct_btrfs_ioctl_received_subvol_args;
+
+#endif /* HAVE_LINUX_BTRFS_H */
+
+#include MPERS_DEFS
+
+#ifdef HAVE_LINUX_BTRFS_H
+
+#include <linux/fs.h>
+
+/*
+ * Prior to Linux 3.12, the BTRFS_IOC_DEFAULT_SUBVOL used u64 in
+ * its definition, which isn't exported by the kernel.
+ */
+typedef __u64 u64;
+
+#ifndef HAVE_STRUCT_BTRFS_IOCTL_FEATURE_FLAGS_COMPAT_FLAGS
+struct btrfs_ioctl_feature_flags {
+	uint64_t compat_flags;
+	uint64_t compat_ro_flags;
+	uint64_t incompat_flags;
+};
+#endif
+
+#ifndef HAVE_STRUCT_BTRFS_IOCTL_DEFRAG_RANGE_ARGS_START
+struct btrfs_ioctl_defrag_range_args {
+	uint64_t start;
+	uint64_t len;
+	uint64_t flags;
+	uint32_t extent_thresh;
+	uint32_t compress_type;
+	uint32_t unused[4];
+};
+#endif
+
+#ifndef BTRFS_LABEL_SIZE
+# define BTRFS_LABEL_SIZE 256
+#endif
+
+#ifndef BTRFS_FIRST_FREE_OBJECTID
+# define BTRFS_FIRST_FREE_OBJECTID 256ULL
+#endif
+
+#ifndef BTRFS_IOC_GET_FEATURES
+# define BTRFS_IOC_GET_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, \
+					struct btrfs_ioctl_feature_flags)
+# define BTRFS_IOC_SET_FEATURES _IOW(BTRFS_IOCTL_MAGIC, 57, \
+					struct btrfs_ioctl_feature_flags[2])
+# define BTRFS_IOC_GET_SUPPORTED_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, \
+					struct btrfs_ioctl_feature_flags[3])
+#endif
+
+#ifndef BTRFS_IOC_TREE_SEARCH_V2
+# define BTRFS_IOC_TREE_SEARCH_V2 _IOWR(BTRFS_IOCTL_MAGIC, 17, \
+					struct btrfs_ioctl_search_args_v2)
+struct btrfs_ioctl_search_args_v2 {
+	struct btrfs_ioctl_search_key key; /* in/out - search parameters */
+	uint64_t buf_size;		   /* in - size of buffer
+					    * out - on EOVERFLOW: needed size
+					    *       to store item */
+	uint64_t buf[0];		   /* out - found items */
+};
+#endif
+
+#include "xlat/btrfs_balance_args.h"
+#include "xlat/btrfs_balance_ctl_cmds.h"
+#include "xlat/btrfs_balance_flags.h"
+#include "xlat/btrfs_balance_state.h"
+#include "xlat/btrfs_compress_types.h"
+#include "xlat/btrfs_defrag_flags.h"
+#include "xlat/btrfs_dev_replace_cmds.h"
+#include "xlat/btrfs_dev_replace_results.h"
+#include "xlat/btrfs_dev_replace_state.h"
+#include "xlat/btrfs_dev_stats_flags.h"
+#include "xlat/btrfs_dev_stats_values.h"
+#include "xlat/btrfs_features_compat.h"
+#include "xlat/btrfs_features_compat_ro.h"
+#include "xlat/btrfs_features_incompat.h"
+#include "xlat/btrfs_key_types.h"
+#include "xlat/btrfs_qgroup_ctl_cmds.h"
+#include "xlat/btrfs_qgroup_inherit_flags.h"
+#include "xlat/btrfs_qgroup_limit_flags.h"
+#include "xlat/btrfs_qgroup_status_flags.h"
+#include "xlat/btrfs_scrub_flags.h"
+#include "xlat/btrfs_send_flags.h"
+#include "xlat/btrfs_snap_flags_v2.h"
+#include "xlat/btrfs_space_info_flags.h"
+#include "xlat/btrfs_tree_objectids.h"
+
+static inline char
+prnibble(char v)
+{
+	if (v >= 10)
+		return 'a' + (v - 10);
+	return '0' + v;
+}
+
+/* 8-4-4-4-12 = 36 characters */
+#define UUID_STRING_SIZE 36
+
+/* Formats uuid, returns 0 if it's all zeroes */
+static int
+btrfs_unparse_uuid(unsigned char *uuid, char *out)
+{
+	int i;
+	int ret = 0;
+	for (i = 0; i < BTRFS_UUID_SIZE; i++) {
+		if (i == 4 || i == 6 || i == 8 || i == 10)
+			*out++ = '-';
+		*out++ = prnibble(uuid[i] >> 4);
+		*out++ = prnibble(uuid[i] & 0xf);
+		if (uuid[i])
+			ret = 1;
+	}
+	*out = '\0';
+	return ret;
+}
+
+static void
+print_u64(const char *name, uint64_t value)
+{
+	tprintf(", %s=%" PRIu64, name, value);
+	if (value == UINT64_MAX)
+		tprints(" /* UINT64_MAX */");
+}
+
+#define print_member_u64(obj, name) print_u64(#name, obj->name)
+
+static void
+btrfs_print_balance_args(const char *name, const struct btrfs_balance_args *bba)
+{
+	tprintf(", %s={profiles=", name);
+	printflags64(btrfs_space_info_flags, bba->profiles,
+		     "BTRFS_BLOCK_GROUP_???");
+	print_member_u64(bba, usage);
+	print_member_u64(bba, devid);
+	print_member_u64(bba, pstart);
+	print_member_u64(bba, pend);
+	print_member_u64(bba, vstart);
+	print_member_u64(bba, vend);
+	print_member_u64(bba, target);
+	tprints(", flags=");
+	printflags64(btrfs_balance_args, bba->flags, "BTRFS_BALANCE_ARGS_???");
+	tprints("}");
+}
+
+static void
+btrfs_print_balance(struct tcb *tcp, const long arg, bool out)
+{
+	struct btrfs_ioctl_balance_args balance_args;
+
+	if (umove_or_printaddr(tcp, arg, &balance_args))
+		return;
+
+	tprints("{flags=");
+	printflags64(btrfs_balance_flags, balance_args.flags,
+		     "BTRFS_BALANCE_???");
+	if (out) {
+		tprints(", state=");
+		printflags64(btrfs_balance_state, balance_args.state,
+			     "BTRFS_BALANCE_STATE_???");
+	}
+
+	if (balance_args.flags & BTRFS_BALANCE_DATA)
+		btrfs_print_balance_args("data", &balance_args.data);
+	if (balance_args.flags & BTRFS_BALANCE_METADATA)
+		btrfs_print_balance_args("meta", &balance_args.meta);
+	if (balance_args.flags & BTRFS_BALANCE_SYSTEM)
+		btrfs_print_balance_args("sys", &balance_args.sys);
+	tprints("}");
+}
+
+static void
+btrfs_print_features(const struct btrfs_ioctl_feature_flags *flags)
+{
+	tprints("{compat_flags=");
+	printflags64(btrfs_features_compat, flags->compat_flags,
+		     "BTRFS_FEATURE_COMPAT_???");
+
+	tprints(", compat_ro_flags=");
+	printflags64(btrfs_features_compat_ro, flags->compat_ro_flags,
+		     "BTRFS_FEATURE_COMPAT_RO_???");
+
+	tprints(", incompat_flags=");
+	printflags64(btrfs_features_incompat, flags->incompat_flags,
+		     "BTRFS_FEATURE_INCOMPAT_???");
+	tprints("}");
+}
+
+static void
+btrfs_print_qgroup_limit(const struct btrfs_qgroup_limit *lim)
+{
+	tprints("{flags=");
+	printflags64(btrfs_qgroup_limit_flags, lim->flags,
+		     "BTRFS_QGROUP_LIMIT_???");
+	tprintf(", max_rfer=%" PRI__u64 ", max_excl=%" PRI__u64
+		", rsv_rfer=%" PRI__u64 ", rsv_excl=%" PRI__u64 "}",
+		lim->max_rfer, lim->max_excl,
+		lim->rsv_rfer, lim->rsv_excl);
+}
+
+static void
+btrfs_print_key_type(uint32_t type)
+{
+	const char *str = xlookup(btrfs_key_types, type);
+	tprintf("%u", type);
+	if (str)
+		tprintf(" /* %s */", str);
+}
+
+static void
+btrfs_print_objectid(uint64_t objectid)
+{
+	const char *str = xlookup(btrfs_tree_objectids, objectid);
+	tprintf("%" PRIu64, objectid);
+	if (str)
+		tprintf(" /* %s */", str);
+}
+
+static void
+btrfs_print_data_container_header(const struct btrfs_data_container *container)
+{
+	tprintf("{bytes_left=%u, bytes_missing=%u"
+		", elem_cnt=%u, elem_missed=%u, val=",
+		container->bytes_left, container->bytes_missing,
+		container->elem_cnt, container->elem_missed);
+}
+
+static void
+btrfs_print_data_container_footer(void)
+{
+	tprints("}");
+}
+
+static bool
+print_btrfs_data_container_logical_ino(struct tcb *tcp, void *elem_buf,
+				       size_t elem_size, void *data)
+{
+	const uint64_t *const record = elem_buf;
+
+	tprintf("{inum=%" PRIu64 ", offset=%" PRIu64 ", root=%" PRIu64 "}",
+		record[0], record[1], record[2]);
+
+	return true;
+}
+
+static void
+btrfs_print_logical_ino_container(struct tcb *tcp,
+				  const uint64_t inodes_addr)
+{
+	struct btrfs_data_container container;
+
+	if (umove_or_printaddr(tcp, inodes_addr, &container))
+		return;
+
+	btrfs_print_data_container_header(&container);
+
+	if (abbrev(tcp)) {
+		tprints("...");
+	} else {
+		const uint64_t val_addr =
+			inodes_addr + offsetof(typeof(container), val);
+		uint64_t record[3];
+		print_array(tcp, val_addr, container.elem_cnt / 3,
+			    record, sizeof(record),
+			    umoven_or_printaddr,
+			    print_btrfs_data_container_logical_ino, 0);
+	}
+
+	btrfs_print_data_container_footer();
+}
+
+static bool
+print_btrfs_data_container_ino_path(struct tcb *tcp, void *elem_buf,
+				       size_t elem_size, void *data)
+{
+	const uint64_t *const offset = elem_buf;
+	const uint64_t *const val_addr = data;
+
+	printpath(tcp, *val_addr + *offset);
+
+	return true;
+}
+
+static void
+btrfs_print_ino_path_container(struct tcb *tcp,
+			       const uint64_t fspath_addr)
+{
+	struct btrfs_data_container container;
+
+	if (umove_or_printaddr(tcp, fspath_addr, &container))
+		return;
+
+	btrfs_print_data_container_header(&container);
+
+	if (abbrev(tcp)) {
+		tprints("...");
+	} else {
+		uint64_t val_addr =
+			fspath_addr + offsetof(typeof(container), val);
+		uint64_t offset;
+		print_array(tcp, val_addr, container.elem_cnt,
+			    &offset, sizeof(offset),
+			    umoven_or_printaddr,
+			    print_btrfs_data_container_ino_path, &val_addr);
+	}
+
+	btrfs_print_data_container_footer();
+}
+
+static bool
+print_uint64(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
+{
+	tprintf("%" PRIu64, * (uint64_t *) elem_buf);
+
+	return true;
+}
+
+static void
+btrfs_print_qgroup_inherit(struct tcb *tcp, const uint64_t qgi_addr)
+{
+	struct btrfs_qgroup_inherit inherit;
+
+	if (umove_or_printaddr(tcp, qgi_addr, &inherit))
+		return;
+
+	tprintf("{flags=");
+	printflags64(btrfs_qgroup_inherit_flags, inherit.flags,
+		     "BTRFS_QGROUP_INHERIT_???");
+	tprintf(", num_qgroups=%" PRI__u64 ", num_ref_copies=%" PRI__u64
+		", num_excl_copies=%" PRI__u64 ", lim=",
+		inherit.num_qgroups, inherit.num_ref_copies,
+		inherit.num_excl_copies);
+
+	btrfs_print_qgroup_limit(&inherit.lim);
+
+	tprints(", qgroups=");
+
+	if (abbrev(tcp)) {
+		tprints("...");
+	} else {
+		uint64_t record;
+		print_array(tcp, qgi_addr + offsetof(typeof(inherit), qgroups),
+			    inherit.num_qgroups, &record, sizeof(record),
+			    umoven_or_printaddr, print_uint64, 0);
+	}
+	tprints("}");
+}
+
+static void
+print_key_value_internal(struct tcb *tcp, const char *name, uint64_t value)
+{
+	if (value) {
+		tprintf(", %s=%" PRIu64, name, value);
+		if (value == UINT64_MAX)
+			tprints(" /* UINT64_MAX */");
+	}
+}
+#define print_key_value(tcp, key, name)					\
+	print_key_value_internal((tcp), #name, (key)->name)
+
+static void
+btrfs_print_tree_search(struct tcb *tcp, struct btrfs_ioctl_search_key *key,
+			uint64_t buf_addr, uint64_t buf_size, bool print_size)
+{
+	if (entering(tcp)) {
+		tprintf("{key={tree_id=");
+		btrfs_print_objectid(key->tree_id);
+
+		if (key->min_objectid != BTRFS_FIRST_FREE_OBJECTID ||
+		    !abbrev(tcp)) {
+			tprints(", min_objectid=");
+			btrfs_print_objectid(key->min_objectid);
+		}
+
+		if (key->max_objectid != BTRFS_LAST_FREE_OBJECTID ||
+		    !abbrev(tcp)) {
+			tprints(", max_objectid=");
+			btrfs_print_objectid(key->max_objectid);
+		}
+
+		print_key_value(tcp, key, min_offset);
+		print_key_value(tcp, key, max_offset);
+		print_key_value(tcp, key, min_transid);
+		print_key_value(tcp, key, max_transid);
+
+		tprints(", min_type=");
+		btrfs_print_key_type(key->min_type);
+		tprints(", max_type=");
+		btrfs_print_key_type(key->max_type);
+		tprintf(", nr_items=%u}", key->nr_items);
+		if (print_size)
+			tprintf(", buf_size=%" PRIu64, buf_size);
+		tprints("}");
+	} else {
+		tprintf("{key={nr_items=%u}", key->nr_items);
+		if (print_size)
+			tprintf(", buf_size=%" PRIu64, buf_size);
+		tprints(", buf=");
+		if (abbrev(tcp))
+			tprints("...");
+		else {
+			uint64_t i;
+			uint64_t off = 0;
+			tprints("[");
+			for (i = 0; i < key->nr_items; i++) {
+				struct btrfs_ioctl_search_header sh;
+				uint64_t addr = buf_addr + off;
+				if (i)
+					tprints(", ");
+				if (i > max_strlen ||
+				    umove(tcp, addr, &sh)) {
+					tprints("...");
+					break;
+				}
+				tprintf("{transid=%" PRI__u64 ", objectid=",
+					sh.transid);
+				btrfs_print_objectid(sh.objectid);
+				tprintf(", offset=%" PRI__u64 ", type=", sh.offset);
+				btrfs_print_key_type(sh.type);
+				tprintf(", len=%u}", sh.len);
+				off += sizeof(sh) + sh.len;
+
+			}
+			tprints("]");
+		}
+		tprints("}");
+	}
+}
+
+static bool
+print_objectid_callback(struct tcb *tcp, void *elem_buf,
+			size_t elem_size, void *data)
+{
+	btrfs_print_objectid(* (uint64_t *) elem_buf);
+
+	return true;
+}
+
+static bool
+print_btrfs_ioctl_space_info(struct tcb *tcp, void *elem_buf,
+			     size_t elem_size, void *data)
+{
+	const struct btrfs_ioctl_space_info *info = elem_buf;
+
+	tprints("{flags=");
+	printflags64(btrfs_space_info_flags, info->flags,
+		     "BTRFS_SPACE_INFO_???");
+	tprintf(", total_bytes=%" PRI__u64 ", used_bytes=%" PRI__u64 "}",
+		info->total_bytes, info->used_bytes);
+
+	return true;
+}
+
+MPERS_PRINTER_DECL(int, btrfs_ioctl,
+		   struct tcb *tcp, const unsigned int code, const long arg)
+{
+	switch (code) {
+	/* Take no arguments; command only. */
+	case BTRFS_IOC_TRANS_START:
+	case BTRFS_IOC_TRANS_END:
+	case BTRFS_IOC_SYNC:
+	case BTRFS_IOC_SCRUB_CANCEL:
+	case BTRFS_IOC_QUOTA_RESCAN_WAIT:
+	/*
+	 * The codes for these ioctls are based on each accepting a
+	 * vol_args but none of them actually consume an argument.
+	 */
+	case BTRFS_IOC_DEFRAG:
+	case BTRFS_IOC_BALANCE:
+		break;
+
+	/* takes a signed int */
+	case BTRFS_IOC_BALANCE_CTL:
+		tprints(", ");
+		printxval(btrfs_balance_ctl_cmds, arg, "BTRFS_BALANCE_CTL_???");
+		break;
+
+	/* returns a 64 */
+	case BTRFS_IOC_START_SYNC: /* R */
+		if (entering(tcp))
+			return 0;
+	/* fall through */
+	/* takes a u64 */
+	case BTRFS_IOC_DEFAULT_SUBVOL: /* W */
+	case BTRFS_IOC_WAIT_SYNC: /* W */
+		tprints(", ");
+		printnum_int64(tcp, arg, "%" PRIu64);
+		break;
+
+	/* u64 but describe a flags bitfield; we can make that symbolic */
+	case BTRFS_IOC_SUBVOL_GETFLAGS: { /* R */
+		uint64_t flags;
+
+		if (entering(tcp))
+			return 0;
+
+		tprints(", ");
+
+		if (umove_or_printaddr(tcp, arg, &flags))
+			break;
+
+		printflags64(btrfs_snap_flags_v2, flags, "BTRFS_SUBVOL_???");
+		break;
+	}
+
+	case BTRFS_IOC_SUBVOL_SETFLAGS: { /* W */
+		uint64_t flags;
+
+		tprints(", ");
+
+		if (umove_or_printaddr(tcp, arg, &flags))
+			break;
+
+		printflags64(btrfs_snap_flags_v2, flags, "BTRFS_SUBVOL_???");
+		break;
+	}
+
+	/* More complex types */
+	case BTRFS_IOC_BALANCE_V2: /* RW */
+		if (entering(tcp)) {
+			tprints(", ");
+			btrfs_print_balance(tcp, arg, false);
+			return 0;
+		}
+
+		if (syserror(tcp))
+			break;
+
+		tprints(" => ");
+		btrfs_print_balance(tcp, arg, true);
+		break;
+	case BTRFS_IOC_BALANCE_PROGRESS: /* R */
+		if (entering(tcp))
+			return 0;
+
+		tprints(", ");
+		btrfs_print_balance(tcp, arg, true);
+		break;
+
+	case BTRFS_IOC_DEFRAG_RANGE: { /* W */
+		struct btrfs_ioctl_defrag_range_args args;
+
+		tprints(", ");
+
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		tprintf("{start=%" PRIu64 ", len=", (uint64_t)args.start);
+
+		tprintf("%" PRIu64, args.len);
+		if (args.len == UINT64_MAX)
+			tprints(" /* UINT64_MAX */");
+
+		tprints(", flags=");
+		printflags64(btrfs_defrag_flags, args.flags,
+			     "BTRFS_DEFRAG_RANGE_???");
+		tprintf(", extent_thresh=%u, compress_type=",
+			args.extent_thresh);
+		printxval(btrfs_compress_types, args.compress_type,
+			  "BTRFS_COMPRESS_???");
+		tprints("}");
+		break;
+	}
+
+	case BTRFS_IOC_DEV_INFO: { /* RW */
+		struct btrfs_ioctl_dev_info_args args;
+		char uuid[UUID_STRING_SIZE+1];
+		int valid;
+
+		if (entering(tcp))
+			tprints(", ");
+		else if (syserror(tcp))
+			break;
+		else
+			tprints(" => ");
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+		tprints("{");
+
+		valid = btrfs_unparse_uuid(args.uuid, uuid);
+		if (entering(tcp)) {
+			tprintf("devid=%" PRI__u64, args.devid);
+			if (valid)
+				tprintf(", uuid=%s", uuid);
+			tprints("}");
+			return 0;
+		}
+		if (valid)
+			tprintf("uuid=%s, ", uuid);
+		tprintf("bytes_used=%" PRI__u64
+			", total_bytes=%" PRI__u64 ", path=",
+			args.bytes_used, args.total_bytes);
+		print_quoted_string((const char *)args.path, sizeof(args.path),
+				    QUOTE_0_TERMINATED);
+		tprints("}");
+		break;
+	}
+
+	case BTRFS_IOC_DEV_REPLACE: { /* RW */
+		struct_btrfs_ioctl_dev_replace_args args;
+
+		if (entering(tcp))
+			tprints(", ");
+		else if (syserror(tcp))
+			break;
+		else
+			tprints(" => ");
+
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		if (entering(tcp)) {
+			tprints("{cmd=");
+			printxval64(btrfs_dev_replace_cmds, args.cmd,
+				    "BTRFS_IOCTL_DEV_REPLACE_CMD_???");
+			if (args.cmd == BTRFS_IOCTL_DEV_REPLACE_CMD_START) {
+				const char *str;
+				tprintf(", start={srcdevid=%" PRIu64
+				   ", cont_reading_from_srcdev_mode=%" PRIu64
+				   ", srcdev_name=",
+				   (uint64_t) args.start.srcdevid,
+				   (uint64_t) args.start.cont_reading_from_srcdev_mode);
+
+				str = (const char*) args.start.srcdev_name;
+				print_quoted_string(str,
+						sizeof(args.start.srcdev_name),
+						QUOTE_0_TERMINATED);
+				tprints(", tgtdev_name=");
+				str = (const char*) args.start.tgtdev_name;
+				print_quoted_string(str,
+						sizeof(args.start.tgtdev_name),
+						QUOTE_0_TERMINATED);
+				tprints("}");
+
+			}
+			tprints("}");
+			return 0;
+		}
+
+		tprints("{result=");
+		printxval64(btrfs_dev_replace_results, args.result,
+			    "BTRFS_IOCTL_DEV_REPLACE_RESULT_???");
+		if (args.cmd == BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS) {
+			char buf[sizeof("HH:MM:SS") + 1];
+			time_t time;
+			tprints(", ");
+			printxval64(btrfs_dev_replace_state,
+				   args.status.replace_state,
+				   "BTRFS_IOCTL_DEV_REPLACE_STATE_???");
+			tprintf(", progress_1000=%" PRIu64 " /* ",
+				(uint64_t) args.status.progress_1000);
+			if (args.status.progress_1000 <= 1000)
+				tprintf("%" PRIu64 ".%.2" PRIu64 "%%",
+					(uint64_t) args.status.progress_1000 / 10,
+					(uint64_t) args.status.progress_1000 % 10);
+			else
+				tprints("???");
+			tprints(" */ ,");
+
+			time = args.status.time_started;
+			strftime(buf, sizeof(buf), "%T",
+				 localtime(&time));
+			tprintf("time_started=%" PRIu64" /* %s */, ",
+				(uint64_t) args.status.time_started, buf);
+
+			time = args.status.time_stopped;
+			strftime(buf, sizeof(buf), "%T",
+				 localtime(&time));
+			tprintf("time_stopped=%" PRIu64" /* %s */, ",
+				(uint64_t) args.status.time_stopped, buf);
+
+			tprintf("num_write_errors=%" PRIu64
+				", num_uncorrectable_read_errors=%" PRIu64,
+				(uint64_t) args.status.num_write_errors,
+				(uint64_t) args.status.num_uncorrectable_read_errors);
+		}
+		tprints("}");
+		break;
+	}
+
+	case BTRFS_IOC_GET_FEATURES: { /* R */
+		struct btrfs_ioctl_feature_flags flags;
+
+		if (entering(tcp))
+			return 0;
+
+		tprints(", ");
+		if (umove_or_printaddr(tcp, arg, &flags))
+			break;
+
+		btrfs_print_features(&flags);
+		break;
+	}
+
+	case BTRFS_IOC_SET_FEATURES: { /* W */
+		struct btrfs_ioctl_feature_flags flarg[2];
+
+		tprints(", ");
+
+		if (umove_or_printaddr(tcp, arg, &flarg))
+			break;
+
+		tprints("[");
+		btrfs_print_features(&flarg[0]);
+		tprints(", ");
+		btrfs_print_features(&flarg[1]);
+		tprints("]");
+		break;
+	}
+
+	case BTRFS_IOC_GET_SUPPORTED_FEATURES: { /* R */
+		struct btrfs_ioctl_feature_flags flarg[3];
+
+		if (entering(tcp))
+			return 0;
+
+		tprints(", ");
+		if (umove_or_printaddr(tcp, arg, &flarg))
+			break;
+
+		tprints("[ /* supported */ ");
+		btrfs_print_features(&flarg[0]);
+
+		tprints(", /* safe to set */ ");
+		btrfs_print_features(&flarg[1]);
+
+		tprints(", /* safe to clear */ ");
+		btrfs_print_features(&flarg[2]);
+		tprints("]");
+
+		break;
+	}
+
+	case BTRFS_IOC_FS_INFO: { /* R */
+		struct btrfs_ioctl_fs_info_args args;
+		char uuid[UUID_STRING_SIZE+1];
+		uint32_t nodesize, sectorsize, clone_alignment;
+#ifndef HAVE_STRUCT_BTRFS_IOCTL_FS_INFO_ARGS_NODESIZE
+		__u32 *reserved32;
+#endif
+
+		if (entering(tcp))
+			return 0;
+
+		tprints(", ");
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+#ifdef HAVE_STRUCT_BTRFS_IOCTL_FS_INFO_ARGS_NODESIZE
+		nodesize = args.nodesize,
+		sectorsize = args.sectorsize,
+		clone_alignment = args.clone_alignment;
+#else
+		reserved32 = (__u32 *)args.reserved;
+		nodesize = reserved32[0];
+		sectorsize = reserved32[1];
+		clone_alignment = reserved32[2];
+#endif
+		btrfs_unparse_uuid(args.fsid, uuid);
+
+		tprints("{");
+		tprintf("max_id=%" PRI__u64 ", num_devices=%" PRI__u64
+			", fsid=%s, nodesize=%u, sectorsize=%u"
+			", clone_alignment=%u",
+			args.max_id, args.num_devices, uuid,
+			nodesize, sectorsize, clone_alignment);
+		tprints("}");
+		break;
+	}
+
+	case BTRFS_IOC_GET_DEV_STATS: { /* RW */
+		struct btrfs_ioctl_get_dev_stats args;
+		uint64_t i;
+
+		if (entering(tcp))
+			tprints(", ");
+		else if (syserror(tcp))
+			break;
+		else
+			tprints(" => ");
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		tprints("{");
+
+		if (entering(tcp))
+			tprintf("devid=%" PRI__u64 ", ", args.devid);
+
+		tprintf("nr_items=%" PRI__u64 ", flags=", args.nr_items);
+		printflags64(btrfs_dev_stats_flags, args.flags,
+			     "BTRFS_DEV_STATS_???");
+
+		if (entering(tcp)) {
+			tprints("}");
+			return 0;
+		}
+
+		/*
+		 * The structure has a 1k limit; Let's make sure we don't
+		 * go off into the middle of nowhere with a bad nr_items
+		 * value.
+		 */
+		tprints(", [");
+		for (i = 0; i < args.nr_items; i++) {
+			if (i)
+				tprints(", ");
+			if (i >= ARRAY_SIZE(args.values)) {
+				tprints("...");
+				break;
+			}
+			const char *name = xlookup(btrfs_dev_stats_values, i);
+			if (name)
+				tprintf("/* %s */ ", name);
+			tprintf("%" PRI__u64, args.values[i]);
+		}
+		tprints("]}");
+		break;
+	}
+
+	case BTRFS_IOC_INO_LOOKUP: { /* RW */
+		struct btrfs_ioctl_ino_lookup_args args;
+
+		if (entering(tcp))
+			tprints(", ");
+		else if (syserror(tcp))
+			break;
+		else
+			tprints(" => ");
+
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		if (entering(tcp)) {
+			/* Use subvolume id of the containing root */
+			if (args.treeid == 0)
+				/* abuse of auxstr to retain state */
+				tcp->auxstr = (void *)1;
+			else
+				tcp->auxstr = NULL;
+
+			tprints("{treeid=");
+			btrfs_print_objectid(args.treeid);
+			tprints(", objectid=");
+			btrfs_print_objectid(args.objectid);
+			tprints("}");
+			return 0;
+		}
+
+		tprints("{");
+		if (tcp->auxstr) {
+			tcp->auxstr = NULL;
+			tprints("treeid=");
+			btrfs_print_objectid(args.treeid);
+			tprints(", ");
+		}
+
+		tprints("name=");
+		print_quoted_string(args.name, sizeof(args.name),
+				    QUOTE_0_TERMINATED);
+		tprints("}");
+		break;
+	}
+
+	case BTRFS_IOC_INO_PATHS: { /* RW */
+		struct btrfs_ioctl_ino_path_args args;
+
+		if (entering(tcp))
+			tprints(", ");
+		else if (syserror(tcp))
+			break;
+		else
+			tprints(" => ");
+
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		tprints("{");
+
+		if (entering(tcp)) {
+			tprintf("inum=%" PRI__u64 ", size=%" PRI__u64,
+				args.inum, args.size);
+			tprintf(", fspath=0x%" PRI__x64 "}", args.fspath);
+			return 0;
+		}
+
+		tprints("fspath=");
+		btrfs_print_ino_path_container(tcp, args.fspath);
+
+		tprints("}");
+		break;
+	}
+
+	case BTRFS_IOC_LOGICAL_INO: { /* RW */
+		struct btrfs_ioctl_logical_ino_args args;
+
+		if (entering(tcp))
+			tprints(", ");
+		else if (syserror(tcp))
+			break;
+		else
+			tprints(" => ");
+
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		tprints("{");
+
+		if (entering(tcp)) {
+			tprintf("logical=%" PRI__u64 ", size=%" PRI__u64,
+				args.logical, args.size);
+			tprintf(", inodes=0x%" PRI__x64 "}", args.inodes);
+			return 0;
+		}
+
+		tprints("inodes=");
+		btrfs_print_logical_ino_container(tcp, args.inodes);
+
+		tprints("}");
+		break;
+	}
+
+	case BTRFS_IOC_QGROUP_ASSIGN: { /* W */
+		struct btrfs_ioctl_qgroup_assign_args args;
+
+		tprints(", ");
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		tprintf("{assign=%" PRI__u64 ", src=%" PRI__u64
+			", dst=%" PRI__u64 "}",
+			args.assign, args.src, args.dst);
+		break;
+	}
+
+	case BTRFS_IOC_QGROUP_CREATE: { /* W */
+		struct btrfs_ioctl_qgroup_create_args args;
+
+		tprints(", ");
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		tprintf("{create=%" PRI__u64 ", qgroupid=%" PRI__u64 "}",
+			args.create, args.qgroupid);
+		break;
+	}
+
+	case BTRFS_IOC_QGROUP_LIMIT: { /* R */
+		struct btrfs_ioctl_qgroup_limit_args args;
+
+		if (entering(tcp))
+			return 0;
+
+		tprints(", ");
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		tprintf("{qgroupid=%" PRI__u64 ", lim=", args.qgroupid);
+		btrfs_print_qgroup_limit(&args.lim);
+		tprints("}");
+		break;
+	}
+
+	case BTRFS_IOC_QUOTA_CTL: { /* W */
+		struct btrfs_ioctl_quota_ctl_args args;
+
+		tprints(", ");
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		printxval64(btrfs_qgroup_ctl_cmds, args.cmd,
+			    "BTRFS_QUOTA_CTL_???");
+		tprints("}");
+
+		break;
+	}
+
+	case BTRFS_IOC_QUOTA_RESCAN: { /* W */
+		struct btrfs_ioctl_quota_rescan_args args;
+
+		tprints(", ");
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		tprintf("{flags=%" PRI__u64 "}", args.flags);
+		break;
+	}
+
+	case BTRFS_IOC_QUOTA_RESCAN_STATUS: { /* R */
+		struct btrfs_ioctl_quota_rescan_args args;
+
+		if (entering(tcp))
+			return 0;
+
+		tprints(", ");
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		tprintf("{flags=%" PRI__u64 ", progress=", args.flags);
+		btrfs_print_objectid(args.progress);
+		tprints("}");
+		break;
+	}
+
+	case BTRFS_IOC_SET_RECEIVED_SUBVOL: { /* RW */
+		struct_btrfs_ioctl_received_subvol_args args;
+		char uuid[UUID_STRING_SIZE+1];
+
+		if (entering(tcp))
+			tprints(", ");
+		else if (syserror(tcp))
+			break;
+		else
+			tprints(" => ");
+
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		if (entering(tcp)) {
+			btrfs_unparse_uuid((unsigned char *)args.uuid, uuid);
+			tprintf("{uuid=%s, stransid=%" PRIu64
+				", stime=%" PRIu64 ".%u, flags=%" PRIu64
+				"}", uuid, (uint64_t) args.stransid,
+				(uint64_t) args.stime.sec, args.stime.nsec,
+				(uint64_t) args.flags);
+			return 0;
+		}
+		tprintf("{rtransid=%" PRIu64 ", rtime=%" PRIu64 ".%u}",
+			(uint64_t) args.rtransid, (uint64_t) args.rtime.sec,
+			args.rtime.nsec);
+		break;
+	}
+
+	case BTRFS_IOC_SCRUB: /* RW */
+	case BTRFS_IOC_SCRUB_PROGRESS: { /* RW */
+		struct btrfs_ioctl_scrub_args args;
+
+		if (entering(tcp))
+			tprints(", ");
+		else if (syserror(tcp))
+			break;
+		else
+			tprints(" => ");
+
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		if (entering(tcp)) {
+			tprintf("{devid=%" PRI__u64, args.devid);
+			if (code == BTRFS_IOC_SCRUB) {
+				tprintf(", start=%" PRI__u64 ", end=",
+					args.start);
+				tprintf("%" PRI__u64, args.end);
+				if (args.end == UINT64_MAX)
+					tprints(" /* UINT64_MAX */");
+				tprints(", flags=");
+				printflags64(btrfs_scrub_flags, args.flags,
+					     "BTRFS_SCRUB_???");
+			}
+			tprints("}");
+			return 0;
+		}
+		tprintf("{data_extents_scrubbed=%" PRI__u64
+			", tree_extents_scrubbed=%" PRI__u64
+			", data_bytes_scrubbed=%" PRI__u64
+			", tree_bytes_scrubbed=%" PRI__u64
+			", read_errors=%" PRI__u64
+			", csum_errors=%" PRI__u64
+			", verify_errors=%" PRI__u64
+			", no_csum=%" PRI__u64
+			", csum_discards=%" PRI__u64
+			", super_errors=%" PRI__u64
+			", malloc_errors=%" PRI__u64
+			", uncorrectable_errors=%" PRI__u64
+			", corrected_errors=%" PRI__u64
+			", last_physical=%" PRI__u64
+			", unverified_errors=%" PRI__u64 "}",
+			args.progress.data_extents_scrubbed,
+			args.progress.tree_extents_scrubbed,
+			args.progress.data_bytes_scrubbed,
+			args.progress.tree_bytes_scrubbed,
+			args.progress.read_errors,
+			args.progress.csum_errors,
+			args.progress.verify_errors,
+			args.progress.no_csum,
+			args.progress.csum_discards,
+			args.progress.super_errors,
+			args.progress.malloc_errors,
+			args.progress.uncorrectable_errors,
+			args.progress.corrected_errors,
+			args.progress.last_physical,
+			args.progress.unverified_errors);
+		break;
+	}
+
+	case BTRFS_IOC_TREE_SEARCH: { /* RW */
+		struct btrfs_ioctl_search_args args;
+		uint64_t buf_offset;
+
+		if (entering(tcp))
+			tprints(", ");
+		else if (syserror(tcp))
+			break;
+		else
+			tprints(" => ");
+
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		buf_offset = offsetof(struct btrfs_ioctl_search_args, buf);
+		btrfs_print_tree_search(tcp, &args.key, arg + buf_offset,
+					sizeof(args.buf), false);
+		if (entering(tcp))
+			return 0;
+		break;
+	}
+
+	case BTRFS_IOC_TREE_SEARCH_V2: { /* RW */
+		struct btrfs_ioctl_search_args_v2 args;
+		uint64_t buf_offset;
+
+		if (entering(tcp))
+			tprints(", ");
+		else if (syserror(tcp)) {
+			if (tcp->u_error == EOVERFLOW) {
+				tprints(" => ");
+				tcp->u_error = 0;
+				if (!umove_or_printaddr(tcp, arg, &args))
+					tprintf("{buf_size=%" PRIu64 "}",
+						(uint64_t)args.buf_size);
+				tcp->u_error = EOVERFLOW;
+			}
+			break;
+		} else
+			tprints(" => ");
+
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		buf_offset = offsetof(struct btrfs_ioctl_search_args_v2, buf);
+		btrfs_print_tree_search(tcp, &args.key, arg + buf_offset,
+					args.buf_size, true);
+		if (entering(tcp))
+			return 0;
+		break;
+	}
+
+	case BTRFS_IOC_SEND: { /* W */
+		struct_btrfs_ioctl_send_args args;
+
+		tprints(", ");
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		tprints("{send_fd=");
+		printfd(tcp, args.send_fd);
+		tprintf(", clone_sources_count=%" PRIu64 ", clone_sources=",
+			(uint64_t) args.clone_sources_count);
+
+		if (abbrev(tcp))
+			tprints("...");
+		else {
+			uint64_t record;
+			print_array(tcp, (unsigned long) args.clone_sources,
+				    args.clone_sources_count,
+				    &record, sizeof(record),
+				    umoven_or_printaddr,
+				    print_objectid_callback, 0);
+		}
+		tprints(", parent_root=");
+		btrfs_print_objectid(args.parent_root);
+		tprints(", flags=");
+		printflags64(btrfs_send_flags, args.flags,
+			     "BTRFS_SEND_FLAGS_???");
+		tprints("}");
+		break;
+	}
+
+	case BTRFS_IOC_SPACE_INFO: { /* RW */
+		struct btrfs_ioctl_space_args args;
+
+		if (entering(tcp))
+			tprints(", ");
+		else if (syserror(tcp))
+			break;
+		else
+			tprints(" => ");
+
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		tprints("{");
+		if (entering(tcp)) {
+			tprintf("space_slots=%" PRI__u64 "}", args.space_slots);
+			return 0;
+		}
+
+		tprintf("total_spaces=%" PRI__u64, args.total_spaces);
+
+		if (args.space_slots == 0 && args.total_spaces) {
+			tprints("}");
+			break;
+		}
+
+		tprints(", spaces=");
+
+		if (abbrev(tcp))
+			tprints("...");
+		else {
+			struct btrfs_ioctl_space_info info;
+			print_array(tcp, arg + offsetof(typeof(args), spaces),
+				    args.total_spaces,
+				    &info, sizeof(info), umoven_or_printaddr,
+				    print_btrfs_ioctl_space_info, 0);
+		}
+		tprints("}");
+		break;
+	}
+
+	case BTRFS_IOC_SNAP_CREATE:
+	case BTRFS_IOC_RESIZE:
+	case BTRFS_IOC_SCAN_DEV:
+	case BTRFS_IOC_ADD_DEV:
+	case BTRFS_IOC_RM_DEV:
+	case BTRFS_IOC_SUBVOL_CREATE:
+	case BTRFS_IOC_SNAP_DESTROY:
+	case BTRFS_IOC_DEVICES_READY: { /* W */
+		struct btrfs_ioctl_vol_args args;
+
+		tprints(", ");
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		tprints("{fd=");
+		printfd(tcp, args.fd);
+		tprints(", name=");
+		print_quoted_string(args.name, sizeof(args.name),
+				    QUOTE_0_TERMINATED);
+		tprints("}");
+		break;
+	}
+
+	case BTRFS_IOC_SNAP_CREATE_V2:
+	case BTRFS_IOC_SUBVOL_CREATE_V2: { /* code is W, but is actually RW */
+		struct btrfs_ioctl_vol_args_v2 args;
+
+		if (entering(tcp))
+			tprints(", ");
+		else if (syserror(tcp))
+			break;
+		else
+			tprints(" => ");
+
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		if (entering(tcp)) {
+			tprints("{fd=");
+			printfd(tcp, args.fd);
+			tprints(", flags=");
+			printflags64(btrfs_snap_flags_v2, args.flags,
+				     "BTRFS_SUBVOL_???");
+			if (args.flags & BTRFS_SUBVOL_QGROUP_INHERIT) {
+				tprintf(", size=%" PRI__u64 ", qgroup_inherit=",
+					args.size);
+
+				btrfs_print_qgroup_inherit(tcp,
+					(unsigned long)args.qgroup_inherit);
+			}
+			tprintf(", name=");
+			print_quoted_string(args.name, sizeof(args.name),
+					    QUOTE_0_TERMINATED);
+			tprints("}");
+			return 0;
+		}
+		tprintf("{transid=%" PRI__u64 "}", args.transid);
+		break;
+	}
+
+	case BTRFS_IOC_GET_FSLABEL: /* R */
+		if (entering(tcp))
+			return 0;
+		/* fall through */
+	case BTRFS_IOC_SET_FSLABEL: { /* W */
+		char label[BTRFS_LABEL_SIZE];
+
+		tprints(", ");
+		if (umove_or_printaddr(tcp, arg, &label))
+			break;
+		print_quoted_string(label, sizeof(label), QUOTE_0_TERMINATED);
+		break;
+	}
+
+	case BTRFS_IOC_CLONE:			/* FICLONE */
+	case BTRFS_IOC_CLONE_RANGE:		/* FICLONERANGE */
+#ifdef BTRFS_IOC_FILE_EXTENT_SAME
+	case BTRFS_IOC_FILE_EXTENT_SAME:	/* FIDEDUPERANGE */
+#endif
+		/*
+		 * FICLONE, FICLONERANGE, and FIDEDUPERANGE started out as
+		 * btrfs ioctls and the code was kept for the generic
+		 * implementations.  We use the BTRFS_* names here because
+		 * they will be available on older systems.
+		 */
+		return file_ioctl(tcp, code, arg);
+
+	default:
+		return RVAL_DECODED;
+	};
+	return RVAL_DECODED | 1;
+}
+#endif /* HAVE_LINUX_BTRFS_H */
diff --git a/cacheflush.c b/cacheflush.c
index aa8bc86..8c2c05c 100644
--- a/cacheflush.c
+++ b/cacheflush.c
@@ -81,9 +81,9 @@
 	/* start addr */
 	printaddr(tcp->u_arg[0]);
 	/* length */
-	tprintf(", %ld, ", tcp->u_arg[1]);
+	tprintf(", %lu, ", tcp->u_arg[1]);
 	/* flags */
-	printxval(cacheflush_flags, tcp->u_arg[1], "?CACHE");
+	printxval(cacheflush_flags, tcp->u_arg[2], "?CACHE");
 
 	return RVAL_DECODED;
 }
diff --git a/clone.c b/clone.c
index cf271da..2fad0b8 100644
--- a/clone.c
+++ b/clone.c
@@ -142,7 +142,7 @@
 
 SYS_FUNC(unshare)
 {
-	printflags(clone_flags, tcp->u_arg[0], "CLONE_???");
+	printflags_long(clone_flags, tcp->u_arg[0], "CLONE_???");
 	return RVAL_DECODED;
 }
 
diff --git a/configure.ac b/configure.ac
index 2b29c94..7dfa1d1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -304,8 +304,6 @@
 [#include <sys/types.h>
 #include <asm/stat.h>])
 
-AC_CHECK_TYPES([struct statfs64],,, [#include <sys/vfs.h>])
-
 AC_CHECK_TYPES(m4_normalize([
 	struct pt_all_user_regs,
 	struct ia64_fpreg,
@@ -363,9 +361,9 @@
 	bluetooth/bluetooth.h
 	elf.h
 	inttypes.h
-	ioctls.h
 	linux/bsg.h
 	linux/falloc.h
+	linux/fiemap.h
 	linux/filter.h
 	linux/hiddev.h
 	linux/ip_vs.h
@@ -377,23 +375,21 @@
 	linux/securebits.h
 	linux/sem.h
 	linux/shm.h
+	linux/userfaultfd.h
 	linux/utsname.h
 	mqueue.h
 	netinet/sctp.h
 	scsi/sg.h
 	stropts.h
 	sys/conf.h
-	sys/epoll.h
 	sys/eventfd.h
 	sys/fanotify.h
-	sys/ioctl.h
 	sys/ipc.h
 	sys/msg.h
 	sys/reg.h
 	sys/sem.h
 	sys/shm.h
 	sys/signalfd.h
-	sys/vfs.h
 	sys/xattr.h
 ]))
 
@@ -434,6 +430,44 @@
 	fi
 ])
 
+AC_CHECK_TYPES([struct statfs], [
+	AC_CHECK_MEMBERS([struct statfs.f_frsize],,, [#include <linux/types.h>
+#include <asm/statfs.h>])
+	AC_CHECK_MEMBERS([struct statfs.f_flags],,, [#include <linux/types.h>
+#include <asm/statfs.h>])
+	AC_CHECK_MEMBERS([struct statfs.f_fsid.val],,, [#include <linux/types.h>
+#include <asm/statfs.h>])
+	AC_CHECK_MEMBERS([struct statfs.f_fsid.__val],,, [#include <linux/types.h>
+#include <asm/statfs.h>])
+],, [#include <linux/types.h>
+#include <asm/statfs.h>])
+
+AC_CHECK_TYPES([struct statfs64], [
+	AC_CHECK_MEMBERS([struct statfs64.f_frsize],,, [#include <linux/types.h>
+#include <asm/statfs.h>])
+	AC_CHECK_MEMBERS([struct statfs64.f_flags],,, [#include <linux/types.h>
+#include <asm/statfs.h>])
+	AC_CHECK_MEMBERS([struct statfs64.f_fsid.val],,, [#include <linux/types.h>
+#include <asm/statfs.h>])
+	AC_CHECK_MEMBERS([struct statfs64.f_fsid.__val],,, [#include <linux/types.h>
+#include <asm/statfs.h>])
+],, [#include <linux/types.h>
+#include <asm/statfs.h>])
+
+AC_CHECK_TYPES([struct blk_user_trace_setup],,, [#include <linux/blktrace_api.h>])
+
+AC_CHECK_HEADERS([linux/btrfs.h], [
+	AC_CHECK_MEMBERS(m4_normalize([
+		struct btrfs_ioctl_feature_flags.compat_flags,
+		struct btrfs_ioctl_fs_info_args.nodesize,
+		struct btrfs_ioctl_defrag_range_args.start
+		struct btrfs_ioctl_search_args_v2.buf_size
+		]),,, [ #include <stdio.h>
+#include <linux/btrfs.h>])
+        AC_CHECK_DECLS(m4_normalize([BTRFS_COMPRESS_NONE, BTRFS_COMPRESS_ZLIB,
+	                        BTRFS_COMPRESS_LZO]),,,[ #include <stdio.h>
+#include <linux/btrfs.h>])])
+
 AC_CHECK_DECLS([sys_errlist])
 AC_CHECK_DECLS(m4_normalize([
 	PTRACE_PEEKUSER,
@@ -818,7 +852,10 @@
 	V4L2_CTRL_TYPE_STRING,
 	V4L2_CTRL_TYPE_BITMASK,
 	V4L2_CTRL_TYPE_INTEGER_MENU
-]),,, [#include <linux/videodev2.h>])
+]),,, [#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
 
 AC_CACHE_CHECK([for BLKGETSIZE64], [ac_cv_have_blkgetsize64],
 	[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
diff --git a/count.c b/count.c
index 4b16ee6..1393b6e 100644
--- a/count.c
+++ b/count.c
@@ -112,8 +112,9 @@
 static int
 syscall_cmp(void *a, void *b)
 {
-	return strcmp(sysent[*((int *) a)].sys_name,
-		      sysent[*((int *) b)].sys_name);
+	const char *a_name = sysent[*((int *) a)].sys_name;
+	const char *b_name = sysent[*((int *) b)].sys_name;
+	return strcmp(a_name ? a_name : "", b_name ? b_name : "");
 }
 
 static int
diff --git a/debian/changelog b/debian/changelog
index e8b3e3b..89157c8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,26 @@
+strace (4.12-1) unstable; urgency=low
+
+  [ Dmitry V. Levin ]
+  * New upstream version.
+    + implemented simultaneous use of -p option and tracing of a command,
+      closes: #549942
+    + fixed decoding of syscalls unknown to the kernel on s390/s390x,
+      closes: #485979
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Tue, 31 May 2016 11:12:13 +0000
+
 strace (4.11-1) unstable; urgency=low
 
   [ Dmitry V. Levin ]
   * New upstream version.
     + fixed decoding of path argument of umount2 syscall, closes: #785050
 
- -- Dmitry V. Levin <ldv@altlinux.org>  Mon, 21 Dec 2015 20:21:22 +0000
+  [ Steve McIntyre ]
+  * Drop patches against old upstream - all upstream now.
+  * Add simple upstream patch to fix printing of 32-bit times syscall
+    return value on 64-bit architectures.
+
+ -- Steve McIntyre <93sam@debian.org>  Fri, 08 Jan 2015 00:52:05 +0000
 
 strace (4.10-3) unstable; urgency=medium
 
diff --git a/defs.h b/defs.h
index ac59349..f7a85ca 100644
--- a/defs.h
+++ b/defs.h
@@ -157,6 +157,7 @@
 #   define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
 #   define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
 #   define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
+#   define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
 #  endif
 # endif
 #endif
@@ -170,11 +171,13 @@
 #  define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
 #  define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
 #  define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
+#  define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
 # endif
 # ifdef HAVE_MX32_MPERS
 #  define PERSONALITY2_INCLUDE_FUNCS "mx32_funcs.h"
 #  define PERSONALITY2_INCLUDE_PRINTERS_DECLS "mx32_printer_decls.h"
 #  define PERSONALITY2_INCLUDE_PRINTERS_DEFS "mx32_printer_defs.h"
+#  define MPERS_mx32_IOCTL_MACROS "ioctl_redefs2.h"
 # endif
 #endif
 
@@ -186,6 +189,7 @@
 #  define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
 #  define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
 #  define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
+#  define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
 # endif
 #endif
 
@@ -202,6 +206,7 @@
 #  define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
 #  define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
 #  define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
+#  define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
 # endif
 #endif
 
@@ -213,6 +218,7 @@
 #  define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
 #  define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
 #  define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
+#  define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
 # endif
 #endif
 
@@ -227,6 +233,7 @@
 #  define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
 #  define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
 #  define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
+#  define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
 # endif
 #endif
 
@@ -360,16 +367,12 @@
 #define abbrev(tcp)	((tcp)->qual_flg & QUAL_ABBREV)
 #define filtered(tcp)	((tcp)->flags & TCB_FILTERED)
 
-struct xlat {
-	unsigned int val;
-	const char *str;
-};
-#define XLAT(x) { x, #x }
-#define XLAT_END { 0, NULL }
+#include "xlat.h"
 
 extern const struct xlat addrfams[];
 extern const struct xlat at_flags[];
 extern const struct xlat dirent_types[];
+extern const struct xlat evdev_abs[];
 extern const struct xlat open_access_modes[];
 extern const struct xlat open_mode_flags[];
 extern const struct xlat resource_flags[];
@@ -508,11 +511,25 @@
 extern int umoven_or_printaddr(struct tcb *, long, unsigned int, void *);
 #define umove_or_printaddr(pid, addr, objp)	\
 	umoven_or_printaddr((pid), (addr), sizeof(*(objp)), (void *) (objp))
-extern int umove_ulong_or_printaddr(struct tcb *, long, unsigned long *);
-extern int umove_ulong_array_or_printaddr(struct tcb *, long, unsigned long *, size_t);
 extern int umovestr(struct tcb *, long, unsigned int, char *);
 extern int upeek(int pid, long, long *);
 
+extern bool
+print_array(struct tcb *tcp,
+	    const unsigned long start_addr,
+	    const size_t nmemb,
+	    void *const elem_buf,
+	    const size_t elem_size,
+	    int (*const umoven_func)(struct tcb *,
+				     long,
+				     unsigned int,
+				     void *),
+	    bool (*const print_func)(struct tcb *,
+				     void *elem_buf,
+				     size_t elem_size,
+				     void *opaque_data),
+	    void *const opaque_data);
+
 #if defined ALPHA || defined IA64 || defined MIPS \
  || defined SH || defined SPARC || defined SPARC64
 # define HAVE_GETRVAL2
@@ -526,8 +543,8 @@
 extern int pathtrace_match(struct tcb *);
 extern int getfdpath(struct tcb *, int, char *, unsigned);
 
-extern const char *xlookup(const struct xlat *, const unsigned int);
-extern const char *xlat_search(const struct xlat *, const size_t, const unsigned int);
+extern const char *xlookup(const struct xlat *, const uint64_t);
+extern const char *xlat_search(const struct xlat *, const size_t, const uint64_t);
 
 extern unsigned long get_pagesize(void);
 extern int string_to_uint(const char *str);
@@ -554,17 +571,16 @@
 	ATTRIBUTE_FORMAT((printf, 2, 0));
 
 extern void printaddr(long);
-extern void printxvals(const unsigned int, const char *, const struct xlat *, ...)
+extern void printxvals(const uint64_t, const char *, const struct xlat *, ...)
 	ATTRIBUTE_SENTINEL;
-#define printxval(xlat, val, dflt) printxvals(val, dflt, xlat, NULL)
 extern int printargs(struct tcb *);
 extern int printargs_u(struct tcb *);
 extern int printargs_d(struct tcb *);
 
-extern void addflags(const struct xlat *, int);
-extern int printflags(const struct xlat *, int, const char *);
-extern const char *sprintflags(const char *, const struct xlat *, int);
-extern const char *sprintmode(int);
+extern void addflags(const struct xlat *, uint64_t);
+extern int printflags64(const struct xlat *, uint64_t, const char *);
+extern const char *sprintflags(const char *, const struct xlat *, uint64_t);
+extern const char *sprintmode(unsigned int);
 extern const char *sprinttime(time_t);
 extern void dumpiov_in_msghdr(struct tcb *, long, unsigned long);
 extern void dumpiov_in_mmsghdr(struct tcb *, long);
@@ -635,21 +651,24 @@
 extern void printsignal(int);
 extern void tprint_iov(struct tcb *, unsigned long, unsigned long, int decode_iov);
 extern void tprint_iov_upto(struct tcb *, unsigned long, unsigned long, int decode_iov, unsigned long);
-extern void tprint_open_modes(int);
-extern const char *sprint_open_modes(int);
-extern void print_seccomp_filter(struct tcb *tcp, unsigned long);
+extern void tprint_open_modes(unsigned int);
+extern const char *sprint_open_modes(unsigned int);
+extern void print_seccomp_filter(struct tcb *, unsigned long);
+extern void print_seccomp_fprog(struct tcb *, unsigned long, unsigned short);
 
-extern int block_ioctl(struct tcb *, const unsigned int, long);
-extern int evdev_ioctl(struct tcb *, const unsigned int, long);
+struct strace_statfs;
+extern void print_struct_statfs(struct tcb *tcp, long);
+extern void print_struct_statfs64(struct tcb *tcp, long, unsigned long);
+
+extern int file_ioctl(struct tcb *, const unsigned int, long);
+extern int fs_x_ioctl(struct tcb *, const unsigned int, long);
 extern int loop_ioctl(struct tcb *, const unsigned int, long);
-extern int mtd_ioctl(struct tcb *, const unsigned int, long);
 extern int ptp_ioctl(struct tcb *, const unsigned int, long);
-extern int rtc_ioctl(struct tcb *, const unsigned int, long);
 extern int scsi_ioctl(struct tcb *, const unsigned int, long);
 extern int sock_ioctl(struct tcb *, const unsigned int, long);
 extern int term_ioctl(struct tcb *, const unsigned int, long);
 extern int ubi_ioctl(struct tcb *, const unsigned int, long);
-extern int v4l2_ioctl(struct tcb *, const unsigned int, long);
+extern int uffdio_ioctl(struct tcb *, const unsigned int, long);
 
 extern int tv_nz(const struct timeval *);
 extern int tv_cmp(const struct timeval *, const struct timeval *);
@@ -668,6 +687,36 @@
 extern void unwind_capture_stacktrace(struct tcb* tcp);
 #endif
 
+static inline int
+printflags(const struct xlat *x, unsigned int flags, const char *dflt)
+{
+	return printflags64(x, flags, dflt);
+}
+
+static inline int
+printflags_long(const struct xlat *x, unsigned long flags, const char *dflt)
+{
+	return printflags64(x, flags, dflt);
+}
+
+static inline void
+printxval64(const struct xlat *x, const uint64_t val, const char *dflt)
+{
+	printxvals(val, dflt, x, NULL);
+}
+
+static inline void
+printxval(const struct xlat *x, const unsigned int val, const char *dflt)
+{
+	printxvals(val, dflt, x, NULL);
+}
+
+static inline void
+printxval_long(const struct xlat *x, const unsigned long val, const char *dflt)
+{
+	printxvals(val, dflt, x, NULL);
+}
+
 /* Strace log generation machinery.
  *
  * printing_tcp: tcb which has incomplete line being printed right now.
@@ -720,6 +769,14 @@
 # define widen_to_long(v) ((long)(v))
 #endif
 
+/*
+ * Widen without sign-extension a signed integer type to unsigned long long.
+ */
+#define widen_to_ull(v) \
+	(sizeof(v) == sizeof(int) ? (unsigned long long) (unsigned int) (v) : \
+	 sizeof(v) == sizeof(long) ? (unsigned long long) (unsigned long) (v) : \
+	 (unsigned long long) (v))
+
 extern const struct_sysent sysent0[];
 extern const char *const errnoent0[];
 extern const char *const signalent0[];
@@ -745,11 +802,17 @@
 extern unsigned nioctlents;
 extern unsigned num_quals;
 
-#if SUPPORTED_PERSONALITIES > 1
-# include "printers.h"
-#else
-# include "native_printer_decls.h"
-#endif
+#ifdef IN_MPERS_BOOTSTRAP
+/* Transform multi-line MPERS_PRINTER_DECL statements to one-liners.  */
+# define MPERS_PRINTER_DECL(type, name, ...) MPERS_PRINTER_DECL(type, name, __VA_ARGS__)
+#else /* !IN_MPERS_BOOTSTRAP */
+# if SUPPORTED_PERSONALITIES > 1
+#  include "printers.h"
+# else
+#  include "native_printer_decls.h"
+# endif
+# define MPERS_PRINTER_DECL(type, name, ...) type MPERS_FUNC_NAME(name)(__VA_ARGS__)
+#endif /* !IN_MPERS_BOOTSTRAP */
 
 /*
  * If you need non-NULL sysent[scno].sys_func and sysent[scno].sys_name
@@ -769,8 +832,6 @@
 
 #define SYS_FUNC(syscall_name) int SYS_FUNC_NAME(sys_ ## syscall_name)(struct tcb *tcp)
 
-#define MPERS_PRINTER_DECL(type, name) type MPERS_FUNC_NAME(name)
-
 /*
  * The kernel used to define 64-bit types on 64-bit systems on a per-arch
  * basis.  Some architectures would use unsigned long and others would use
@@ -787,6 +848,6 @@
 # define PRI__64 "ll"
 #endif
 
-#define PRI__s64 PRI__64"d"
+#define PRI__d64 PRI__64"d"
 #define PRI__u64 PRI__64"u"
 #define PRI__x64 PRI__64"x"
diff --git a/dirent.c b/dirent.c
index ae576c8..75e3635 100644
--- a/dirent.c
+++ b/dirent.c
@@ -48,8 +48,8 @@
 		return;
 
 	tprintf("{d_ino=%llu, d_off=%llu, d_reclen=%u, d_name=",
-		(unsigned long long) d.d_ino,
-		(unsigned long long) d.d_off, d.d_reclen);
+		widen_to_ull(d.d_ino),
+		widen_to_ull(d.d_off), d.d_reclen);
 	if (d.d_reclen > D_NAME_LEN_MAX)
 		d.d_reclen = D_NAME_LEN_MAX;
 	printpathn(tcp, addr + offsetof(kernel_dirent, d_name), d.d_reclen);
@@ -76,16 +76,19 @@
 SYS_FUNC(getdents)
 {
 	unsigned int i, len, dents = 0;
-	char *buf;
+	unsigned char *buf;
 
 	if (entering(tcp)) {
 		printfd(tcp, tcp->u_arg[0]);
 		tprints(", ");
 		return 0;
 	}
+
+	const unsigned int count = tcp->u_arg[2];
+
 	if (syserror(tcp) || !verbose(tcp)) {
 		printaddr(tcp->u_arg[1]);
-		tprintf(", %lu", tcp->u_arg[2]);
+		tprintf(", %u", count);
 		return 0;
 	}
 
@@ -101,7 +104,7 @@
 		buf = malloc(len);
 		if (!buf || umoven(tcp, tcp->u_arg[1], len, buf) < 0) {
 			printaddr(tcp->u_arg[1]);
-			tprintf(", %lu", tcp->u_arg[2]);
+			tprintf(", %u", count);
 			free(buf);
 			return 0;
 		}
@@ -124,8 +127,8 @@
 
 			tprintf("%s{d_ino=%llu, d_off=%llu, d_reclen=%u"
 				", d_name=", i ? ", " : "",
-				(unsigned long long) d->d_ino,
-				(unsigned long long) d->d_off, d->d_reclen);
+				widen_to_ull(d->d_ino),
+				widen_to_ull(d->d_off), d->d_reclen);
 
 			if (print_quoted_string(d->d_name, d_name_len,
 					        QUOTE_0_TERMINATED) > 0) {
@@ -150,7 +153,7 @@
 		tprints("]");
 	else
 		tprintf("/* %u entries */", dents);
-	tprintf(", %lu", tcp->u_arg[2]);
+	tprintf(", %u", count);
 	free(buf);
 	return 0;
 }
diff --git a/dirent64.c b/dirent64.c
index 3c90a25..448a2f1 100644
--- a/dirent64.c
+++ b/dirent64.c
@@ -49,9 +49,12 @@
 		tprints(", ");
 		return 0;
 	}
+
+	const unsigned int count = tcp->u_arg[2];
+
 	if (syserror(tcp) || !verbose(tcp)) {
 		printaddr(tcp->u_arg[1]);
-		tprintf(", %lu", tcp->u_arg[2]);
+		tprintf(", %u", count);
 		return 0;
 	}
 
@@ -67,7 +70,7 @@
 		buf = malloc(len);
 		if (!buf || umoven(tcp, tcp->u_arg[1], len, buf) < 0) {
 			printaddr(tcp->u_arg[1]);
-			tprintf(", %lu", tcp->u_arg[2]);
+			tprintf(", %u", count);
 			free(buf);
 			return 0;
 		}
@@ -117,7 +120,7 @@
 		tprints("]");
 	else
 		tprintf("/* %u entries */", dents);
-	tprintf(", %lu", tcp->u_arg[2]);
+	tprintf(", %u", count);
 	free(buf);
 	return 0;
 }
diff --git a/epoll.c b/epoll.c
index eed4447..7382e0c 100644
--- a/epoll.c
+++ b/epoll.c
@@ -29,9 +29,7 @@
 
 #include "defs.h"
 #include <fcntl.h>
-#ifdef HAVE_SYS_EPOLL_H
-# include <sys/epoll.h>
-#endif
+#include <sys/epoll.h>
 
 SYS_FUNC(epoll_create)
 {
@@ -49,84 +47,53 @@
 	return RVAL_DECODED | RVAL_FD;
 }
 
-#ifdef HAVE_SYS_EPOLL_H
-# include "xlat/epollevents.h"
+#include "xlat/epollevents.h"
 
-static void
-print_epoll_event(struct epoll_event *ev)
+static bool
+print_epoll_event(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
 {
+	const struct epoll_event *ev = elem_buf;
+
 	tprints("{");
 	printflags(epollevents, ev->events, "EPOLL???");
 	/* We cannot know what format the program uses, so print u32 and u64
 	   which will cover every value.  */
 	tprintf(", {u32=%" PRIu32 ", u64=%" PRIu64 "}}",
 		ev->data.u32, ev->data.u64);
+
+	return true;
 }
-#endif
 
 #include "xlat/epollctls.h"
 
 SYS_FUNC(epoll_ctl)
 {
-	struct epoll_event ev;
-
 	printfd(tcp, tcp->u_arg[0]);
 	tprints(", ");
-	printxval(epollctls, tcp->u_arg[1], "EPOLL_CTL_???");
+	const unsigned int op = tcp->u_arg[1];
+	printxval(epollctls, op, "EPOLL_CTL_???");
 	tprints(", ");
 	printfd(tcp, tcp->u_arg[2]);
 	tprints(", ");
-#ifdef HAVE_SYS_EPOLL_H
-	if (EPOLL_CTL_DEL == tcp->u_arg[1])
+	struct epoll_event ev;
+	if (EPOLL_CTL_DEL == op)
 		printaddr(tcp->u_arg[3]);
 	else if (!umove_or_printaddr(tcp, tcp->u_arg[3], &ev))
-		print_epoll_event(&ev);
-#else
-	printaddr(tcp->u_arg[3]);
-#endif
+		print_epoll_event(tcp, &ev, sizeof(ev), 0);
 
 	return RVAL_DECODED;
 }
 
 static void
-print_epoll_event_array(struct tcb *tcp, const long addr, const long len)
-{
-#ifdef HAVE_SYS_EPOLL_H
-	struct epoll_event ev, *start, *cur, *end;
-
-	if (!len) {
-		tprints("[]");
-		return;
-	}
-
-	if (umove_or_printaddr(tcp, addr, &ev))
-		return;
-
-	tprints("[");
-	print_epoll_event(&ev);
-
-	start = (struct epoll_event *) addr;
-	end = start + len;
-	for (cur = start + 1; cur < end; ++cur) {
-		tprints(", ");
-		if (umove_or_printaddr(tcp, (long) cur, &ev))
-			break;
-		print_epoll_event(&ev);
-	}
-	tprints("]");
-#else
-	printaddr(addr);
-#endif
-}
-
-static void
 epoll_wait_common(struct tcb *tcp)
 {
 	if (entering(tcp)) {
 		printfd(tcp, tcp->u_arg[0]);
 		tprints(", ");
 	} else {
-		print_epoll_event_array(tcp, tcp->u_arg[1], tcp->u_rval);
+		struct epoll_event ev;
+		print_array(tcp, tcp->u_arg[1], tcp->u_rval, &ev, sizeof(ev),
+			    umoven_or_printaddr, print_epoll_event, 0);
 		tprintf(", %d, %d", (int) tcp->u_arg[2], (int) tcp->u_arg[3]);
 	}
 }
diff --git a/evdev.c b/evdev.c
index f89397e..2e436d6 100644
--- a/evdev.c
+++ b/evdev.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015 Etienne Gemsa <etienne.gemsa@lse.epita.fr>
- * Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -28,33 +28,47 @@
 
 #include "defs.h"
 
-#include <linux/ioctl.h>
+#ifdef HAVE_LINUX_INPUT_H
+
+#include DEF_MPERS_TYPE(struct_ff_effect)
+
+# include <linux/ioctl.h>
+# include <linux/input.h>
+
+typedef struct ff_effect struct_ff_effect;
+
+#endif /* HAVE_LINUX_BTRFS_H */
+
+#include MPERS_DEFS
 
 #ifdef HAVE_LINUX_INPUT_H
-#include <linux/input.h>
-#include "xlat/evdev_abs.h"
-#include "xlat/evdev_autorepeat.h"
-#include "xlat/evdev_ff_status.h"
-#include "xlat/evdev_ff_types.h"
-#include "xlat/evdev_keycode.h"
-#include "xlat/evdev_leds.h"
-#include "xlat/evdev_misc.h"
-#include "xlat/evdev_mtslots.h"
-#include "xlat/evdev_prop.h"
-#include "xlat/evdev_relative_axes.h"
-#include "xlat/evdev_snd.h"
-#include "xlat/evdev_switch.h"
-#include "xlat/evdev_sync.h"
 
-#ifndef SYN_MAX
-# define SYN_MAX 0xf
-#endif
+# include "xlat/evdev_autorepeat.h"
+# include "xlat/evdev_ff_status.h"
+# include "xlat/evdev_ff_types.h"
+# include "xlat/evdev_keycode.h"
+# include "xlat/evdev_leds.h"
+# include "xlat/evdev_misc.h"
+# include "xlat/evdev_mtslots.h"
+# include "xlat/evdev_prop.h"
+# include "xlat/evdev_relative_axes.h"
+# include "xlat/evdev_snd.h"
+# include "xlat/evdev_switch.h"
+# include "xlat/evdev_sync.h"
+
+# ifndef SYN_MAX
+#  define SYN_MAX 0xf
+# endif
 
 static void
-decode_envelope(struct ff_envelope *envelope)
+decode_envelope(void *const data)
 {
-	tprintf(", envelope={attack_length=%" PRIu16 ", attack_level=%" PRIu16
-		", fade_length=%" PRIu16 ", fade_level=%" PRIx32 "}",
+	const struct ff_envelope *const envelope = data;
+
+	tprintf(", envelope={attack_length=%" PRIu16
+		", attack_level=%" PRIu16
+		", fade_length=%" PRIu16
+		", fade_level=%#x}",
 		envelope->attack_length,
 		envelope->attack_level,
 		envelope->fade_length,
@@ -64,136 +78,151 @@
 static int
 ff_effect_ioctl(struct tcb *tcp, long arg)
 {
-	struct ff_effect ffe;
+	tprints(", ");
 
-	if (!verbose(tcp) || umove(tcp, arg, &ffe) < 0)
-		return 0;
+	struct_ff_effect ffe;
 
-	tprints(", {type=");
+	if (umove_or_printaddr(tcp, arg, &ffe))
+		return 1;
+
+	tprints("{type=");
 	printxval(evdev_ff_types, ffe.type, "FF_???");
-	tprintf(", id=%" PRIu16 ", direction=%" PRIu16,
-		ffe.id, ffe.direction);
+	tprintf(", id=%" PRIu16
+		", direction=%" PRIu16 ", ",
+		ffe.id,
+		ffe.direction);
 
-	if (!abbrev(tcp)) {
-		tprintf(", trigger={button=%" PRIu16 ", interval=%" PRIu16 "}",
-			ffe.trigger.button, ffe.trigger.interval);
-		tprintf(", replay={lenght=%" PRIu16 ", delay=%" PRIu16 "}",
-			ffe.replay.length, ffe.replay.delay);
-		switch (ffe.type) {
-			case FF_CONSTANT:
-				tprintf(", constant_ef={%" PRIi16,
-					ffe.u.constant.level);
-				decode_envelope(&ffe.u.constant.envelope);
-				tprints("}");
-				return 1;
-			case FF_RAMP:
-				tprintf(", ramp={start_level=%" PRIi16
-					", end_level=%" PRIi16,
-					ffe.u.ramp.start_level,
-					ffe.u.ramp.end_level);
-				decode_envelope(&ffe.u.ramp.envelope);
-				tprints("}");
-				return 1;
-			case FF_PERIODIC:
-				tprintf(", periodic_ef={waveform=%" PRIu16
-					", period=%" PRIu16
-					", magnitude=%" PRIi16
-					", offset=%" PRIi16
-					", phase=%" PRIu16,
-					ffe.u.periodic.waveform,
-					ffe.u.periodic.period,
-					ffe.u.periodic.magnitude,
-					ffe.u.periodic.offset,
-					ffe.u.periodic.phase);
-				decode_envelope(&ffe.u.periodic.envelope);
-				tprintf(", custom_len=%" PRIu32
-					", *custom_data=%#lx}",
-					ffe.u.periodic.custom_len,
-					(unsigned long)ffe.u.periodic.custom_data);
-				return 1;
-			case FF_RUMBLE:
-				tprintf(", rumble={strong_magnitude=%" PRIu16
-					", weak_magnitude=%" PRIu16 "}",
-					ffe.u.rumble.strong_magnitude,
-					ffe.u.rumble.weak_magnitude);
-				return 1;
-			case FF_SPRING:
-			case FF_FRICTION:
-			case FF_DAMPER:
-			case FF_INERTIA:
-			case FF_CUSTOM:
-				break;
-			default :
-				break;
-		}
+	if (abbrev(tcp)) {
+		tprints("...}");
+		return 1;
 	}
 
-	tprints(", ...}");
+	tprintf("trigger={button=%" PRIu16
+		", interval=%" PRIu16 "}"
+		", replay={length=%" PRIu16
+		", delay=%" PRIu16 "}",
+		ffe.trigger.button,
+		ffe.trigger.interval,
+		ffe.replay.length,
+		ffe.replay.delay);
+
+	switch (ffe.type) {
+		case FF_CONSTANT:
+			tprintf(", constant={level=%" PRId16,
+				ffe.u.constant.level);
+			decode_envelope(&ffe.u.constant.envelope);
+			tprints("}");
+			break;
+		case FF_RAMP:
+			tprintf(", ramp={start_level=%" PRId16
+				", end_level=%" PRId16,
+				ffe.u.ramp.start_level,
+				ffe.u.ramp.end_level);
+			decode_envelope(&ffe.u.ramp.envelope);
+			tprints("}");
+			break;
+		case FF_PERIODIC:
+			tprintf(", periodic={waveform=%" PRIu16
+				", period=%" PRIu16
+				", magnitude=%" PRId16
+				", offset=%" PRId16
+				", phase=%" PRIu16,
+				ffe.u.periodic.waveform,
+				ffe.u.periodic.period,
+				ffe.u.periodic.magnitude,
+				ffe.u.periodic.offset,
+				ffe.u.periodic.phase);
+			decode_envelope(&ffe.u.periodic.envelope);
+			tprintf(", custom_len=%u"
+				", custom_data=%#lx}",
+				ffe.u.periodic.custom_len,
+				(unsigned long) ffe.u.periodic.custom_data);
+			break;
+		case FF_RUMBLE:
+			tprintf(", rumble={strong_magnitude=%" PRIu16
+				", weak_magnitude=%" PRIu16 "}",
+				ffe.u.rumble.strong_magnitude,
+				ffe.u.rumble.weak_magnitude);
+			break;
+		default:
+			break;
+	}
+
+	tprints("}");
+
 	return 1;
 }
 
 static int
 abs_ioctl(struct tcb *tcp, long arg)
 {
+	tprints(", ");
+
 	struct input_absinfo absinfo;
 
-	if (!verbose(tcp) || umove(tcp, arg, &absinfo) < 0)
-		return 0;
+	if (!umove_or_printaddr(tcp, arg, &absinfo)) {
+		tprintf("{value=%u"
+			", minimum=%u, ",
+			absinfo.value,
+			absinfo.minimum);
 
-	tprintf(", {value=%" PRIu32 ", minimum=%" PRIu32,
-		absinfo.value, absinfo.minimum);
-	if (!abbrev(tcp)) {
-		tprintf(", maximum=%" PRIu32 ", fuzz=%" PRIu32,
-			absinfo.maximum, absinfo.fuzz);
-		tprintf(", flat=%" PRIu32, absinfo.flat);
-#ifdef HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION
-		tprintf(", resolution=%" PRIu32, absinfo.resolution);
-#endif
+		if (!abbrev(tcp)) {
+			tprintf("maximum=%u"
+				", fuzz=%u"
+				", flat=%u",
+				absinfo.maximum,
+				absinfo.fuzz,
+				absinfo.flat);
+# ifdef HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION
+			tprintf(", resolution=%u",
+				absinfo.resolution);
+# endif
+		} else {
+			tprints("...");
+		}
+
 		tprints("}");
-	} else {
-		tprints(", ...}");
 	}
+
 	return 1;
 }
 
 static int
 keycode_ioctl(struct tcb *tcp, long arg)
 {
+	tprints(", ");
+
 	unsigned int keycode[2];
 
-	if (!arg) {
-		tprints(", NULL");
-		return 1;
+	if (!umove_or_printaddr(tcp, arg, &keycode)) {
+		tprintf("[%u, ", keycode[0]);
+		printxval(evdev_keycode, keycode[1], "KEY_???");
+		tprints("]");
 	}
 
-	if (!verbose(tcp) || umove(tcp, arg, &keycode) < 0)
-		return 0;
-
-	tprintf(", [%u, ", keycode[0]);
-	printxval(evdev_keycode, keycode[1], "KEY_???");
-	tprints("]");
 	return 1;
 }
 
-#ifdef EVIOCGKEYCODE_V2
+# ifdef EVIOCGKEYCODE_V2
 static int
 keycode_V2_ioctl(struct tcb *tcp, long arg)
 {
+	tprints(", ");
+
 	struct input_keymap_entry ike;
 
-	if (!arg) {
-		tprints(", NULL");
+	if (umove_or_printaddr(tcp, arg, &ike))
 		return 1;
-	}
 
-	if (!verbose(tcp) || umove(tcp, arg, &ike) < 0)
-		return 0;
+	tprintf("{flags=%" PRIu8
+		", len=%" PRIu8 ", ",
+		ike.flags,
+		ike.len);
 
-	tprintf(", {flags=%" PRIu8 ", len=%" PRIu8, ike.flags, ike.len);
 	if (!abbrev(tcp)) {
 		unsigned int i;
 
-		tprintf(", index=%" PRIu16 ", keycode=", ike.index);
+		tprintf("index=%" PRIu16 ", keycode=", ike.index);
 		printxval(evdev_keycode, ike.keycode, "KEY_???");
 		tprints(", scancode=[");
 		for (i = 0; i < ARRAY_SIZE(ike.scancode); i++) {
@@ -201,30 +230,34 @@
 				tprints(", ");
 			tprintf("%" PRIx8, ike.scancode[i]);
 		}
-		tprints("]}");
+		tprints("]");
 	} else {
-		tprints(", ...}");
+		tprints("...");
 	}
+
+	tprints("}");
+
 	return 1;
 }
-#endif /* EVIOCGKEYCODE_V2 */
+# endif /* EVIOCGKEYCODE_V2 */
 
 static int
 getid_ioctl(struct tcb *tcp, long arg)
 {
+	tprints(", ");
+
 	struct input_id id;
 
-	if (!verbose(tcp) || umove(tcp, arg, &id) < 0)
-		return 0;
+	if (!umove_or_printaddr(tcp, arg, &id))
+		tprintf("{ID_BUS=%" PRIu16
+			", ID_VENDOR=%" PRIu16
+			", ID_PRODUCT=%" PRIu16
+			", ID_VERSION=%" PRIu16 "}",
+			id.bustype,
+			id.vendor,
+			id.product,
+			id.version);
 
-	tprintf(", {ID_BUS=%" PRIu16 ", ID_VENDOR=%" PRIu16,
-		id.bustype, id.vendor);
-	if (!abbrev(tcp)) {
-		tprintf(", ID_PRODUCT=%" PRIu16 ", ID_VERSION=%" PRIu16 "}",
-			id.product, id.version);
-	} else {
-		tprints(", ...}");
-	}
 	return 1;
 }
 
@@ -232,8 +265,7 @@
 decode_bitset(struct tcb *tcp, long arg, const struct xlat decode_nr[],
 	      const unsigned int max_nr, const char *dflt)
 {
-	if (!verbose(tcp))
-		return 0;
+	tprints(", ");
 
 	unsigned int size;
 	if ((unsigned long) tcp->u_rval > max_nr)
@@ -242,10 +274,10 @@
 		size = tcp->u_rval;
 	char decoded_arg[size];
 
-	if (umoven(tcp, arg, size, decoded_arg) < 0)
-		return 0;
+	if (umove_or_printaddr(tcp, arg, &decoded_arg))
+		return 1;
 
-	tprints(", [");
+	tprints("[");
 
 	int bit_displayed = 0;
 	int i = next_set_bit(decoded_arg, 0, size);
@@ -270,34 +302,39 @@
 	return 1;
 }
 
-#ifdef EVIOCGMTSLOTS
+# ifdef EVIOCGMTSLOTS
 static int
 mtslots_ioctl(struct tcb *tcp, const unsigned int code, long arg)
 {
-	const size_t size = _IOC_SIZE(code) / sizeof(int32_t);
-	if (!size)
-		return 0;
+	tprints(", ");
 
-	int32_t buffer[size];
+	const size_t size = _IOC_SIZE(code) / sizeof(int);
+	if (!size) {
+		printaddr(arg);
+		return 1;
+	}
 
-	if (!verbose(tcp) || umove(tcp, arg, &buffer) < 0)
-		return 0;
+	int buffer[size];
 
-	tprints(", {code=");
+	if (umove_or_printaddr(tcp, arg, &buffer))
+		return 1;
+
+	tprints("{code=");
 	printxval(evdev_mtslots, buffer[0], "ABS_MT_???");
 
-	unsigned int i;
 	tprints(", values=[");
 
+	unsigned int i;
 	for (i = 1; i < ARRAY_SIZE(buffer); i++)
 		tprintf("%s%d", i > 1 ? ", " : "", buffer[i]);
 
 	tprints("]}");
+
 	return 1;
 }
-#endif /* EVIOCGMTSLOTS */
+# endif /* EVIOCGMTSLOTS */
 
-#if defined EVIOCGREP || defined EVIOCSREP
+# if defined EVIOCGREP || defined EVIOCSREP
 static int
 repeat_ioctl(struct tcb *tcp, long arg)
 {
@@ -305,173 +342,185 @@
 	printpair_int(tcp, arg, "%u");
 	return 1;
 }
-#endif /* EVIOCGREP || EVIOCSREP */
+# endif /* EVIOCGREP || EVIOCSREP */
 
 static int
-evdev_read_ioctl(struct tcb *tcp, const unsigned int code, long arg)
+bit_ioctl(struct tcb *tcp, const unsigned int ev_nr, const long arg)
 {
-	if (entering(tcp))
-		return 1;
-
-	if (syserror(tcp))
-		return 0;
-
-	if ((_IOC_NR(code) & ~EV_MAX) == _IOC_NR(EVIOCGBIT(0, 0))) {
-		switch (_IOC_NR(code) - 0x20) {
-			case EV_SYN:
-				return decode_bitset(tcp, arg, evdev_sync,
-						SYN_MAX, "SYN_???");
-			case EV_KEY:
-				return decode_bitset(tcp, arg, evdev_keycode,
-						KEY_MAX, "KEY_???");
-			case EV_REL:
-				return decode_bitset(tcp, arg, evdev_relative_axes,
-						REL_MAX, "REL_???");
-			case EV_ABS:
-				return decode_bitset(tcp, arg,
-						evdev_abs, ABS_MAX, "ABS_???");
-			case EV_MSC:
-				return decode_bitset(tcp, arg,
-						evdev_misc, MSC_MAX, "MSC_???");
-#ifdef EV_SW
-			case EV_SW:
-				return decode_bitset(tcp, arg,
-						evdev_switch, SW_MAX, "SW_???");
-#endif
-			case EV_LED:
-				return decode_bitset(tcp, arg,
-						evdev_leds, LED_MAX, "LED_???");
-			case EV_SND:
-				return decode_bitset(tcp, arg,
-						evdev_snd, SND_MAX, "SND_???");
-			case EV_REP:
-				return decode_bitset(tcp, arg, evdev_autorepeat,
-						REP_MAX, "REP_???");
-			case EV_FF:
-				return decode_bitset(tcp, arg, evdev_ff_types,
-						FF_MAX, "FF_???");
-			case EV_PWR:
-				printnum_int(tcp, arg, "%d");
-				return 1;
-			case EV_FF_STATUS:
-				return decode_bitset(tcp, arg, evdev_ff_status,
-						FF_STATUS_MAX, "FF_STATUS_???");
-			default:
-				return 0;
-		}
+	switch (ev_nr) {
+		case EV_SYN:
+			return decode_bitset(tcp, arg, evdev_sync,
+					     SYN_MAX, "SYN_???");
+		case EV_KEY:
+			return decode_bitset(tcp, arg, evdev_keycode,
+					     KEY_MAX, "KEY_???");
+		case EV_REL:
+			return decode_bitset(tcp, arg, evdev_relative_axes,
+					     REL_MAX, "REL_???");
+		case EV_ABS:
+			return decode_bitset(tcp, arg, evdev_abs,
+					     ABS_MAX, "ABS_???");
+		case EV_MSC:
+			return decode_bitset(tcp, arg, evdev_misc,
+					     MSC_MAX, "MSC_???");
+# ifdef EV_SW
+		case EV_SW:
+			return decode_bitset(tcp, arg, evdev_switch,
+					     SW_MAX, "SW_???");
+# endif
+		case EV_LED:
+			return decode_bitset(tcp, arg, evdev_leds,
+					     LED_MAX, "LED_???");
+		case EV_SND:
+			return decode_bitset(tcp, arg, evdev_snd,
+					     SND_MAX, "SND_???");
+		case EV_REP:
+			return decode_bitset(tcp, arg, evdev_autorepeat,
+					     REP_MAX, "REP_???");
+		case EV_FF:
+			return decode_bitset(tcp, arg, evdev_ff_types,
+					     FF_MAX, "FF_???");
+		case EV_PWR:
+			tprints(", ");
+			printnum_int(tcp, arg, "%d");
+			return 1;
+		case EV_FF_STATUS:
+			return decode_bitset(tcp, arg, evdev_ff_status,
+					     FF_STATUS_MAX, "FF_STATUS_???");
+		default:
+			tprints(", ");
+			printaddr(arg);
+			return 1;
 	}
+}
 
-	if ((_IOC_NR(code) & ~ABS_MAX) == _IOC_NR(EVIOCGABS(0)))
-		return abs_ioctl(tcp, arg);
-
+static int
+evdev_read_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
+{
+	/* fixed-number fixed-length commands */
 	switch (code) {
 		case EVIOCGVERSION:
 			tprints(", ");
-			printnum_int(tcp, arg, "%" PRIx32);
+			printnum_int(tcp, arg, "%#x");
 			return 1;
 		case EVIOCGEFFECTS:
 			tprints(", ");
-			printnum_int(tcp, arg, "%" PRIu32);
+			printnum_int(tcp, arg, "%u");
 			return 1;
 		case EVIOCGID:
 			return getid_ioctl(tcp, arg);
-#ifdef EVIOCGREP
+# ifdef EVIOCGREP
 		case EVIOCGREP:
-			return repeat_ioctl(tcp, arg);;
-#endif
+			return repeat_ioctl(tcp, arg);
+# endif
 		case EVIOCGKEYCODE:
 			return keycode_ioctl(tcp, arg);
-#ifdef EVIOCGKEYCODE_V2
+# ifdef EVIOCGKEYCODE_V2
 		case EVIOCGKEYCODE_V2:
 			return keycode_V2_ioctl(tcp, arg);
-#endif
+# endif
 	}
 
+	/* fixed-number variable-length commands */
 	switch (_IOC_NR(code)) {
-#ifdef EVIOCGMTSLOTS
+# ifdef EVIOCGMTSLOTS
 		case _IOC_NR(EVIOCGMTSLOTS(0)):
 			return mtslots_ioctl(tcp, code, arg);
-#endif
+# endif
 		case _IOC_NR(EVIOCGNAME(0)):
 		case _IOC_NR(EVIOCGPHYS(0)):
 		case _IOC_NR(EVIOCGUNIQ(0)):
 			tprints(", ");
-			printstr(tcp, arg, tcp->u_rval - 1);
+			if (syserror(tcp))
+				printaddr(arg);
+			else
+				printstr(tcp, arg, tcp->u_rval);
 			return 1;
-#ifdef EVIOCGPROP
+# ifdef EVIOCGPROP
 		case _IOC_NR(EVIOCGPROP(0)):
-			return decode_bitset(tcp, arg,
-					evdev_prop, INPUT_PROP_MAX, "PROP_???");
-#endif
+			return decode_bitset(tcp, arg, evdev_prop,
+					     INPUT_PROP_MAX, "PROP_???");
+# endif
 		case _IOC_NR(EVIOCGSND(0)):
-			return decode_bitset(tcp, arg,
-					evdev_snd, SND_MAX, "SND_???");
-#ifdef EVIOCGSW
+			return decode_bitset(tcp, arg, evdev_snd,
+					     SND_MAX, "SND_???");
+# ifdef EVIOCGSW
 		case _IOC_NR(EVIOCGSW(0)):
-			return decode_bitset(tcp, arg,
-					evdev_switch, SW_MAX, "SW_???");
-#endif
+			return decode_bitset(tcp, arg, evdev_switch,
+					     SW_MAX, "SW_???");
+# endif
 		case _IOC_NR(EVIOCGKEY(0)):
-			return decode_bitset(tcp, arg,
-					evdev_keycode, KEY_MAX, "KEY_???");
+			return decode_bitset(tcp, arg, evdev_keycode,
+					     KEY_MAX, "KEY_???");
 		case _IOC_NR(EVIOCGLED(0)):
-			return decode_bitset(tcp, arg,
-					evdev_leds, LED_MAX, "LED_???");
-		default:
-			return 0;
+			return decode_bitset(tcp, arg, evdev_leds,
+					     LED_MAX, "LED_???");
 	}
+
+	/* multi-number fixed-length commands */
+	if ((_IOC_NR(code) & ~ABS_MAX) == _IOC_NR(EVIOCGABS(0)))
+		return abs_ioctl(tcp, arg);
+
+	/* multi-number variable-length commands */
+	if ((_IOC_NR(code) & ~EV_MAX) == _IOC_NR(EVIOCGBIT(0, 0)))
+		return bit_ioctl(tcp, _IOC_NR(code) & EV_MAX, arg);
+
+	return 0;
 }
 
 static int
-evdev_write_ioctl(struct tcb *tcp, const unsigned int code, long arg)
+evdev_write_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
 {
-	if (exiting(tcp))
-		return 1;
-
-	if ((_IOC_NR(code) & ~ABS_MAX) == _IOC_NR(EVIOCSABS(0)))
-		return abs_ioctl(tcp, arg);
-
+	/* fixed-number fixed-length commands */
 	switch (code) {
-#ifdef EVIOCSREP
+# ifdef EVIOCSREP
 		case EVIOCSREP:
 			return repeat_ioctl(tcp, arg);
-#endif
+# endif
 		case EVIOCSKEYCODE:
 			return keycode_ioctl(tcp, arg);
-#ifdef EVIOCSKEYCODE_V2
+# ifdef EVIOCSKEYCODE_V2
 		case EVIOCSKEYCODE_V2:
 			return keycode_V2_ioctl(tcp, arg);
-#endif
+# endif
 		case EVIOCSFF:
 			return ff_effect_ioctl(tcp, arg);
 		case EVIOCRMFF:
-#ifdef EVIOCSCLOCKID
-		case EVIOCSCLOCKID:
-#endif
+			tprintf(", %d", (int) arg);
+			return 1;
 		case EVIOCGRAB:
-#ifdef EVIOCREVOKE
+# ifdef EVIOCREVOKE
 		case EVIOCREVOKE:
-#endif
+# endif
+			tprintf(", %lu", arg);
+			return 1;
+# ifdef EVIOCSCLOCKID
+		case EVIOCSCLOCKID:
 			tprints(", ");
 			printnum_int(tcp, arg, "%u");
 			return 1;
-		default:
-			return 0;
+# endif
 	}
+
+	/* multi-number fixed-length commands */
+	if ((_IOC_NR(code) & ~ABS_MAX) == _IOC_NR(EVIOCSABS(0)))
+		return abs_ioctl(tcp, arg);
+
+	return 0;
 }
 
-int
-evdev_ioctl(struct tcb *tcp, const unsigned int code, long arg)
+MPERS_PRINTER_DECL(int, evdev_ioctl, struct tcb *tcp,
+		   const unsigned int code, const long arg)
 {
 	switch(_IOC_DIR(code)) {
 		case _IOC_READ:
+			if (entering(tcp))
+				return 0;
 			return evdev_read_ioctl(tcp, code, arg);
 		case _IOC_WRITE:
-			if (!evdev_write_ioctl(tcp, code, arg))
-				tprintf(", %lx", arg);
-			return 1;
+			return evdev_write_ioctl(tcp, code, arg) | RVAL_DECODED;
 		default:
-			return 0;
+			return RVAL_DECODED;
 	}
 }
 
diff --git a/fanotify.c b/fanotify.c
index 715ea63..203e9d2 100644
--- a/fanotify.c
+++ b/fanotify.c
@@ -39,9 +39,8 @@
 
 SYS_FUNC(fanotify_init)
 {
-	unsigned flags;
+	unsigned int flags = tcp->u_arg[0];
 
-	flags = tcp->u_arg[0];
 	printxval(fan_classes, flags & FAN_ALL_CLASS_BITS, "FAN_CLASS_???");
 	flags &= ~FAN_ALL_CLASS_BITS;
 	if (flags) {
@@ -59,23 +58,21 @@
 
 SYS_FUNC(fanotify_mark)
 {
-	unsigned long long mask = 0;
-	int argn;
-
 	printfd(tcp, tcp->u_arg[0]);
 	tprints(", ");
-	printflags(fan_mark_flags, (unsigned) tcp->u_arg[1], "FAN_MARK_???");
+	printflags(fan_mark_flags, tcp->u_arg[1], "FAN_MARK_???");
 	tprints(", ");
 	/*
 	 * the mask argument is defined as 64-bit,
 	 * but kernel uses the lower 32 bits only.
 	 */
-	argn = getllval(tcp, &mask, 2);
+	unsigned long long mask = 0;
+	int argn = getllval(tcp, &mask, 2);
 #ifdef HPPA
 	/* Parsic is weird.  See arch/parisc/kernel/sys_parisc32.c.  */
 	mask = (mask << 32) | (mask >> 32);
 #endif
-	printflags(fan_event_flags, mask, "FAN_???");
+	printflags64(fan_event_flags, mask, "FAN_???");
 	tprints(", ");
 	if ((int) tcp->u_arg[argn] == FAN_NOFD)
 		tprints("FAN_NOFD, ");
diff --git a/fcntl.c b/fcntl.c
index 561c164..bfe8b14 100644
--- a/fcntl.c
+++ b/fcntl.c
@@ -43,9 +43,9 @@
 print_struct_flock64(const struct_kernel_flock64 *fl, const int getlk)
 {
 	tprints("{l_type=");
-	printxval(lockfcmds, fl->l_type, "F_???");
+	printxval(lockfcmds, (unsigned short) fl->l_type, "F_???");
 	tprints(", l_whence=");
-	printxval(whence_codes, fl->l_whence, "SEEK_???");
+	printxval(whence_codes, (unsigned short) fl->l_whence, "SEEK_???");
 	tprintf(", l_start=%lld, l_len=%lld",
 		(long long) fl->l_start, (long long) fl->l_len);
 	if (getlk)
@@ -87,7 +87,9 @@
 static int
 print_fcntl(struct tcb *tcp)
 {
-	switch (tcp->u_arg[1]) {
+	const unsigned int cmd = tcp->u_arg[1];
+
+	switch (cmd) {
 	case F_SETFD:
 		tprints(", ");
 		printflags(fdflags, tcp->u_arg[2], "FD_???");
@@ -120,15 +122,15 @@
 		break;
 	case F_NOTIFY:
 		tprints(", ");
-		printflags(notifyflags, tcp->u_arg[2], "DN_???");
+		printflags_long(notifyflags, tcp->u_arg[2], "DN_???");
 		break;
 	case F_SETLEASE:
 		tprints(", ");
-		printxval(lockfcmds, tcp->u_arg[2], "F_???");
+		printxval_long(lockfcmds, tcp->u_arg[2], "F_???");
 		break;
 	case F_ADD_SEALS:
 		tprints(", ");
-		printflags(f_seals, tcp->u_arg[2], "F_SEAL_???");
+		printflags_long(f_seals, tcp->u_arg[2], "F_SEAL_???");
 		break;
 	case F_SETSIG:
 		tprints(", ");
@@ -140,7 +142,8 @@
 	case F_GETFD:
 		if (entering(tcp) || syserror(tcp) || tcp->u_rval == 0)
 			return 0;
-		tcp->auxstr = sprintflags("flags ", fdflags, tcp->u_rval);
+		tcp->auxstr = sprintflags("flags ", fdflags,
+					  (unsigned long) tcp->u_rval);
 		return RVAL_HEX | RVAL_STR;
 	case F_GETFL:
 		if (entering(tcp) || syserror(tcp))
@@ -168,12 +171,13 @@
 	case F_GETLEASE:
 		if (entering(tcp) || syserror(tcp))
 			return 0;
-		tcp->auxstr = xlookup(lockfcmds, tcp->u_rval);
+		tcp->auxstr = xlookup(lockfcmds, (unsigned long) tcp->u_rval);
 		return RVAL_HEX | RVAL_STR;
 	case F_GET_SEALS:
 		if (entering(tcp) || syserror(tcp) || tcp->u_rval == 0)
 			return 0;
-		tcp->auxstr = sprintflags("seals ", f_seals, tcp->u_rval);
+		tcp->auxstr = sprintflags("seals ", f_seals,
+					  (unsigned long) tcp->u_rval);
 		return RVAL_HEX | RVAL_STR;
 	case F_GETSIG:
 		if (entering(tcp) || syserror(tcp) || tcp->u_rval == 0)
@@ -192,7 +196,8 @@
 	if (entering(tcp)) {
 		printfd(tcp, tcp->u_arg[0]);
 		tprints(", ");
-		const char *str = xlookup(fcntlcmds, tcp->u_arg[1]);
+		const unsigned int cmd = tcp->u_arg[1];
+		const char *str = xlookup(fcntlcmds, cmd);
 		if (str) {
 			tprints(str);
 		} else {
@@ -201,7 +206,7 @@
 			 * constants, but we would like to show them
 			 * for better debugging experience.
 			 */
-			printxval(fcntl64cmds, tcp->u_arg[1], "F_???");
+			printxval(fcntl64cmds, cmd, "F_???");
 		}
 	}
 	return print_fcntl(tcp);
@@ -209,17 +214,18 @@
 
 SYS_FUNC(fcntl64)
 {
+	const unsigned int cmd = tcp->u_arg[1];
 	if (entering(tcp)) {
 		printfd(tcp, tcp->u_arg[0]);
 		tprints(", ");
-		const char *str = xlookup(fcntl64cmds, tcp->u_arg[1]);
+		const char *str = xlookup(fcntl64cmds, cmd);
 		if (str) {
 			tprints(str);
 		} else {
-			printxval(fcntlcmds, tcp->u_arg[1], "F_???");
+			printxval(fcntlcmds, cmd, "F_???");
 		}
 	}
-	switch (tcp->u_arg[1]) {
+	switch (cmd) {
 		case F_SETLK64:
 		case F_SETLKW64:
 			tprints(", ");
diff --git a/fetch_seccomp_fprog.c b/fetch_seccomp_fprog.c
index dbaf83a..d54b979 100644
--- a/fetch_seccomp_fprog.c
+++ b/fetch_seccomp_fprog.c
@@ -34,7 +34,8 @@
 
 #include MPERS_DEFS
 
-MPERS_PRINTER_DECL(bool, fetch_seccomp_fprog)(struct tcb *tcp, const long addr, void *p)
+MPERS_PRINTER_DECL(bool, fetch_seccomp_fprog,
+		   struct tcb *tcp, const long addr, void *p)
 {
 	struct seccomp_fprog *pfp = p;
 	seccomp_fprog_t mfp;
diff --git a/fetch_struct_flock.c b/fetch_struct_flock.c
index cd195e2..b5713f4 100644
--- a/fetch_struct_flock.c
+++ b/fetch_struct_flock.c
@@ -51,7 +51,8 @@
 	 && FLOCK_MEMBERS_EQ(type, l_len) \
 	 && FLOCK_MEMBERS_EQ(type, l_pid))
 
-MPERS_PRINTER_DECL(bool, fetch_struct_flock)(struct tcb *tcp, const long addr, void *p)
+MPERS_PRINTER_DECL(bool, fetch_struct_flock,
+		   struct tcb *tcp, const long addr, void *p)
 {
 	struct_kernel_flock64 *pfl = p;
 	struct_flock mfl;
@@ -70,7 +71,8 @@
 	return true;
 }
 
-MPERS_PRINTER_DECL(bool, fetch_struct_flock64)(struct tcb *tcp, const long addr, void *p)
+MPERS_PRINTER_DECL(bool, fetch_struct_flock64,
+		   struct tcb *tcp, const long addr, void *p)
 {
 	struct_kernel_flock64 *pfl = p;
 	struct_flock64 mfl;
diff --git a/fetch_struct_statfs.c b/fetch_struct_statfs.c
new file mode 100644
index 0000000..0cfe5ba
--- /dev/null
+++ b/fetch_struct_statfs.c
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "defs.h"
+
+#include DEF_MPERS_TYPE(struct_statfs)
+#include DEF_MPERS_TYPE(struct_statfs64)
+
+#include <linux/types.h>
+#include <asm/statfs.h>
+typedef struct statfs struct_statfs;
+typedef struct statfs64 struct_statfs64;
+
+#include MPERS_DEFS
+
+#include "statfs.h"
+
+MPERS_PRINTER_DECL(bool, fetch_struct_statfs,
+		   struct tcb *tcp, const long addr, struct strace_statfs *p)
+{
+	struct_statfs b;
+
+	if (umove_or_printaddr(tcp, addr, &b))
+		return false;
+
+	p->f_type = widen_to_ull(b.f_type);
+	p->f_bsize = widen_to_ull(b.f_bsize);
+	p->f_blocks = widen_to_ull(b.f_blocks);
+	p->f_bfree = widen_to_ull(b.f_bfree);
+	p->f_bavail = widen_to_ull(b.f_bavail);
+	p->f_files = widen_to_ull(b.f_files);
+	p->f_ffree = widen_to_ull(b.f_ffree);
+#if defined HAVE_STRUCT_STATFS_F_FSID_VAL
+	p->f_fsid[0] = widen_to_ull(b.f_fsid.val[0]);
+	p->f_fsid[1] = widen_to_ull(b.f_fsid.val[1]);
+#elif defined HAVE_STRUCT_STATFS_F_FSID___VAL
+	p->f_fsid[0] = widen_to_ull(b.f_fsid.__val[0]);
+	p->f_fsid[1] = widen_to_ull(b.f_fsid.__val[1]);
+#endif
+	p->f_namelen = widen_to_ull(b.f_namelen);
+#ifdef HAVE_STRUCT_STATFS_F_FRSIZE
+	p->f_frsize = widen_to_ull(b.f_frsize);
+#endif
+#ifdef HAVE_STRUCT_STATFS_F_FLAGS
+	p->f_flags = widen_to_ull(b.f_flags);
+#endif
+
+	return true;
+}
+
+#if defined ARM || (defined AARCH64 && defined IN_MPERS)
+/* See arch/arm/kernel/sys_oabi-compat.c for details. */
+# define COMPAT_STATFS64_PADDED_SIZE (sizeof(struct_statfs64) + 4)
+#endif
+
+MPERS_PRINTER_DECL(bool, fetch_struct_statfs64,
+		   struct tcb *tcp, const long addr, const unsigned long size,
+		   struct strace_statfs *p)
+{
+	struct_statfs64 b;
+
+        if (sizeof(b) != size
+#ifdef COMPAT_STATFS64_PADDED_SIZE
+	    && sizeof(b) != COMPAT_STATFS64_PADDED_SIZE
+#endif
+	   ) {
+		printaddr(addr);
+		return false;
+	}
+
+	if (umove_or_printaddr(tcp, addr, &b))
+		return false;
+
+	p->f_type = widen_to_ull(b.f_type);
+	p->f_bsize = widen_to_ull(b.f_bsize);
+	p->f_blocks = widen_to_ull(b.f_blocks);
+	p->f_bfree = widen_to_ull(b.f_bfree);
+	p->f_bavail = widen_to_ull(b.f_bavail);
+	p->f_files = widen_to_ull(b.f_files);
+	p->f_ffree = widen_to_ull(b.f_ffree);
+#if defined HAVE_STRUCT_STATFS64_F_FSID_VAL
+	p->f_fsid[0] = widen_to_ull(b.f_fsid.val[0]);
+	p->f_fsid[1] = widen_to_ull(b.f_fsid.val[1]);
+#elif defined HAVE_STRUCT_STATFS64_F_FSID___VAL
+	p->f_fsid[0] = widen_to_ull(b.f_fsid.__val[0]);
+	p->f_fsid[1] = widen_to_ull(b.f_fsid.__val[1]);
+#endif
+	p->f_namelen = widen_to_ull(b.f_namelen);
+#ifdef HAVE_STRUCT_STATFS64_F_FRSIZE
+	p->f_frsize = widen_to_ull(b.f_frsize);
+#endif
+#ifdef HAVE_STRUCT_STATFS64_F_FLAGS
+	p->f_flags = widen_to_ull(b.f_flags);
+#endif
+
+	return true;
+}
diff --git a/file_ioctl.c b/file_ioctl.c
new file mode 100644
index 0000000..de81019
--- /dev/null
+++ b/file_ioctl.c
@@ -0,0 +1,248 @@
+/*
+ * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "defs.h"
+#include <linux/ioctl.h>
+#include <linux/fs.h>
+
+#ifdef HAVE_LINUX_FIEMAP_H
+# include <linux/fiemap.h>
+# include "xlat/fiemap_flags.h"
+# include "xlat/fiemap_extent_flags.h"
+#endif
+
+#ifndef FICLONE
+# define FICLONE         _IOW(0x94, 9, int)
+#endif
+
+#ifndef FICLONERANGE
+# define FICLONERANGE    _IOW(0x94, 13, struct file_clone_range)
+struct file_clone_range {
+	int64_t src_fd;
+	uint64_t src_offset;
+	uint64_t src_length;
+	uint64_t dest_offset;
+};
+#endif
+
+#ifndef FIDEDUPERANGE
+# define FIDEDUPERANGE   _IOWR(0x94, 54, struct file_dedupe_range)
+struct file_dedupe_range_info {
+	int64_t dest_fd;	/* in - destination file */
+	uint64_t dest_offset;	/* in - start of extent in destination */
+	uint64_t bytes_deduped;	/* out - total # of bytes we were able
+				 * to dedupe from this file. */
+	/* status of this dedupe operation:
+	 * < 0 for error
+	 * == FILE_DEDUPE_RANGE_SAME if dedupe succeeds
+	 * == FILE_DEDUPE_RANGE_DIFFERS if data differs
+	 */
+	int32_t status;		/* out - see above description */
+	uint32_t reserved;	/* must be zero */
+};
+
+struct file_dedupe_range {
+	uint64_t src_offset;	/* in - start of extent in source */
+	uint64_t src_length;	/* in - length of extent */
+	uint16_t dest_count;	/* in - total elements in info array */
+	uint16_t reserved1;	/* must be zero */
+	uint32_t reserved2;	/* must be zero */
+	struct file_dedupe_range_info info[0];
+};
+#endif
+
+static bool
+print_file_dedupe_range_info(struct tcb *tcp, void *elem_buf,
+			     size_t elem_size, void *data)
+{
+	const struct file_dedupe_range_info *info = elem_buf;
+	unsigned int *count = data;
+
+	if (count) {
+		if (*count == 0) {
+			tprints("...");
+			return false;
+		}
+		--*count;
+	}
+
+	if (entering(tcp)) {
+		tprints("{dest_fd=");
+		printfd(tcp, info->dest_fd);
+		tprintf(", dest_offset=%" PRIu64 "}",
+			(uint64_t) info->dest_offset);
+	} else {
+		tprintf("{bytes_deduped=%" PRIu64 ", status=%d}",
+			(uint64_t) info->bytes_deduped, info->status);
+	}
+
+	return true;
+}
+
+#ifdef HAVE_LINUX_FIEMAP_H
+static bool
+print_fiemap_extent(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
+{
+	const struct fiemap_extent *fe = elem_buf;
+
+	tprintf("{fe_logical=%" PRI__u64
+		", fe_physical=%" PRI__u64
+		", fe_length=%" PRI__u64 ", ",
+		fe->fe_logical, fe->fe_physical, fe->fe_length);
+
+	printflags64(fiemap_extent_flags, fe->fe_flags,
+		     "FIEMAP_EXTENT_???");
+	tprints("}");
+
+	return true;
+}
+#endif /* HAVE_LINUX_FIEMAP_H */
+
+int
+file_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
+{
+	switch (code) {
+	case FICLONE:	/* W */
+		tprintf(", %d", (int) arg);
+		break;
+
+	case FICLONERANGE: { /* W */
+		struct file_clone_range args;
+
+		tprints(", ");
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		tprints("{src_fd=");
+		printfd(tcp, args.src_fd);
+		tprintf(", src_offset=%" PRIu64
+			", src_length=%" PRIu64
+			", dest_offset=%" PRIu64 "}",
+			(uint64_t) args.src_offset,
+			(uint64_t) args.src_length,
+			(uint64_t) args.dest_offset);
+		break;
+	}
+
+	case FIDEDUPERANGE: { /* RW */
+		struct file_dedupe_range args;
+		struct file_dedupe_range_info info;
+		unsigned int *limit = NULL;
+		unsigned int count = 2;
+		bool rc;
+
+		if (entering(tcp))
+			tprints(", ");
+		else if (syserror(tcp))
+			break;
+		else
+			tprints(" => ");
+
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		tprints("{");
+		if (entering(tcp)) {
+			tprintf("src_offset=%" PRIu64
+				", src_length=%" PRIu64
+				", dest_count=%hu, ",
+				(uint64_t) args.src_offset,
+				(uint64_t) args.src_length,
+				(uint16_t) args.dest_count);
+		}
+
+		tprints("info=");
+
+		/* Limit how many elements we print in abbrev mode. */
+		if (abbrev(tcp) && args.dest_count > count)
+			limit = &count;
+
+		rc = print_array(tcp, arg + offsetof(typeof(args), info),
+				 args.dest_count, &info, sizeof(info),
+				 umoven_or_printaddr,
+				 print_file_dedupe_range_info, limit);
+
+		tprints("}");
+		if (!rc || exiting(tcp))
+			break;
+
+		return 0;
+	}
+
+#ifdef HAVE_LINUX_FIEMAP_H
+	case FS_IOC_FIEMAP: {
+		struct fiemap args;
+
+		if (entering(tcp))
+			tprints(", ");
+		else if (syserror(tcp))
+			break;
+		else
+			tprints(" => ");
+
+		if (umove_or_printaddr(tcp, arg, &args))
+			break;
+
+		if (entering(tcp)) {
+			tprintf("{fm_start=%" PRI__u64 ", "
+				"fm_length=%" PRI__u64 ", "
+				"fm_flags=",
+				args.fm_start, args.fm_length);
+			printflags64(fiemap_flags, args.fm_flags,
+				     "FIEMAP_FLAG_???");
+			tprintf(", fm_extent_count=%u}", args.fm_extent_count);
+			return 0;
+		}
+
+		tprints("{fm_flags=");
+		printflags64(fiemap_flags, args.fm_flags,
+			     "FIEMAP_FLAG_???");
+		tprintf(", fm_mapped_extents=%u",
+			args.fm_mapped_extents);
+		tprints(", fm_extents=");
+		if (abbrev(tcp)) {
+			tprints("...");
+		} else {
+			struct fiemap_extent fe;
+			print_array(tcp,
+				    arg + offsetof(typeof(args), fm_extents),
+				    args.fm_mapped_extents, &fe, sizeof(fe),
+				    umoven_or_printaddr,
+				    print_fiemap_extent, 0);
+		}
+		tprints("}");
+
+		break;
+	}
+#endif /* HAVE_LINUX_FIEMAP_H */
+
+	default:
+		return RVAL_DECODED;
+	};
+
+	return RVAL_DECODED | 1;
+}
diff --git a/fs_x_ioctl.c b/fs_x_ioctl.c
new file mode 100644
index 0000000..7403e6b
--- /dev/null
+++ b/fs_x_ioctl.c
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
+ * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "defs.h"
+#include <linux/fs.h>
+
+int
+fs_x_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
+{
+	switch (code) {
+#ifdef FITRIM
+	/* First seen in linux-2.6.37 */
+	case FITRIM: {
+		struct fstrim_range fstrim;
+
+		tprints(", ");
+		if (!umove_or_printaddr(tcp, arg, &fstrim))
+			tprintf("{start=%#" PRIx64
+				", len=%#" PRIx64
+				", minlen=%#" PRIx64 "}",
+				(uint64_t) fstrim.start,
+				(uint64_t) fstrim.len,
+				(uint64_t) fstrim.minlen);
+		break;
+	}
+#endif
+
+	/* No arguments */
+#ifdef FIFREEZE
+	case FIFREEZE:
+	case FITHAW:
+		break;
+#endif
+
+	default:
+		return RVAL_DECODED;
+	}
+
+	return RVAL_DECODED | 1;
+}
diff --git a/fstatfs.c b/fstatfs.c
new file mode 100644
index 0000000..1f35824
--- /dev/null
+++ b/fstatfs.c
@@ -0,0 +1,12 @@
+#include "defs.h"
+
+SYS_FUNC(fstatfs)
+{
+	if (entering(tcp)) {
+		printfd(tcp, tcp->u_arg[0]);
+		tprints(", ");
+	} else {
+		print_struct_statfs(tcp, tcp->u_arg[1]);
+	}
+	return 0;
+}
diff --git a/fstatfs64.c b/fstatfs64.c
new file mode 100644
index 0000000..63eb3df
--- /dev/null
+++ b/fstatfs64.c
@@ -0,0 +1,14 @@
+#include "defs.h"
+
+SYS_FUNC(fstatfs64)
+{
+	const unsigned long size = tcp->u_arg[1];
+
+	if (entering(tcp)) {
+		printfd(tcp, tcp->u_arg[0]);
+		tprintf(", %lu, ", size);
+	} else {
+		print_struct_statfs64(tcp, tcp->u_arg[2], size);
+	}
+	return 0;
+}
diff --git a/hdio.c b/hdio.c
new file mode 100644
index 0000000..e9dbdf1
--- /dev/null
+++ b/hdio.c
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2009, 2010 Jeff Mahoney <jeffm@suse.com>
+ * Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "defs.h"
+
+#include DEF_MPERS_TYPE(struct_hd_geometry)
+
+#include <linux/hdreg.h>
+
+typedef struct hd_geometry struct_hd_geometry;
+
+#include MPERS_DEFS
+
+MPERS_PRINTER_DECL(int, hdio_ioctl, struct tcb *tcp,
+		   const unsigned int code, const long arg)
+{
+	switch (code) {
+	case HDIO_GETGEO:
+		if (entering(tcp))
+			return 0;
+		else {
+			struct_hd_geometry geo;
+
+			tprints(", ");
+			if (!umove_or_printaddr(tcp, arg, &geo))
+				tprintf("{heads=%u, sectors=%u, "
+					"cylinders=%hu, start=%lu}",
+					(unsigned) geo.heads,
+					(unsigned) geo.sectors,
+					geo.cylinders,
+					(unsigned long) geo.start);
+		}
+		break;
+	default:
+		return RVAL_DECODED;
+	}
+
+	return RVAL_DECODED | 1;
+}
diff --git a/io.c b/io.c
index ce787cd..87b5f47 100644
--- a/io.c
+++ b/io.c
@@ -57,65 +57,57 @@
 	return RVAL_DECODED;
 }
 
+struct print_iovec_config {
+	int decode_iov;
+	unsigned long data_size;
+};
+
+static bool
+print_iovec(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
+{
+	const unsigned long *iov;
+	unsigned long iov_buf[2];
+	struct print_iovec_config *c = data;
+
+        if (elem_size < sizeof(iov_buf)) {
+		iov_buf[0] = ((unsigned int *) elem_buf)[0];
+		iov_buf[1] = ((unsigned int *) elem_buf)[1];
+		iov = iov_buf;
+	} else {
+		iov = elem_buf;
+	}
+
+	tprints("{");
+
+	if (c->decode_iov) {
+		unsigned long len = iov[1];
+		if (len > c->data_size)
+			len = c->data_size;
+		c->data_size -= len;
+		printstr(tcp, iov[0], len);
+	} else {
+		printaddr(iov[0]);
+	}
+
+	tprintf(", %lu}", iov[1]);
+
+	return true;
+}
+
 /*
  * data_size limits the cumulative size of printed data.
  * Example: recvmsg returing a short read.
  */
 void
-tprint_iov_upto(struct tcb *tcp, unsigned long len, unsigned long addr, int decode_iov, unsigned long data_size)
+tprint_iov_upto(struct tcb *tcp, unsigned long len, unsigned long addr,
+		int decode_iov, unsigned long data_size)
 {
 	unsigned long iov[2];
-	unsigned long size, cur, end, abbrev_end;
-	const unsigned long sizeof_iov = current_wordsize * 2;
+	struct print_iovec_config config =
+		{ .decode_iov = decode_iov, .data_size = data_size };
 
-	if (!len) {
-		tprints("[]");
-		return;
-	}
-	size = len * sizeof_iov;
-	end = addr + size;
-	if (!verbose(tcp) || (exiting(tcp) && syserror(tcp)) ||
-	    !addr || size / sizeof_iov != len || end < addr) {
-		printaddr(addr);
-		return;
-	}
-	if (abbrev(tcp)) {
-		abbrev_end = addr + max_strlen * sizeof_iov;
-		if (abbrev_end < addr)
-			abbrev_end = end;
-	} else {
-		abbrev_end = end;
-	}
-	if (addr >= abbrev_end) {
-		tprints("[...]");
-		return;
-	}
-	for (cur = addr; cur < end; cur += sizeof_iov) {
-		if (cur > addr) {
-			tprints(", ");
-			if (cur >= abbrev_end) {
-				tprints("...");
-				break;
-			}
-		}
-		if (umove_ulong_array_or_printaddr(tcp, cur, iov,
-						   ARRAY_SIZE(iov)))
-			break;
-		if (cur <= addr)
-			tprints("[");
-		tprints("{");
-		if (decode_iov) {
-			unsigned long len = iov[1];
-			if (len > data_size)
-				len = data_size;
-			data_size -= len;
-			printstr(tcp, iov[0], len);
-		} else
-			printaddr(iov[0]);
-		tprintf(", %lu}", iov[1]);
-	}
-	if (cur > addr)
-		tprints("]");
+	print_array(tcp, addr, len, iov, current_wordsize * 2,
+		    umoven_or_printaddr, print_iovec, &config);
 }
 
 void
@@ -210,12 +202,15 @@
 	else
 # endif
 	tprintf("%lld",
-		((unsigned long long) (unsigned long) tcp->u_arg[arg + 1] << sizeof(long) * 8)
-		| (unsigned long long) (unsigned long) tcp->u_arg[arg]);
+		(widen_to_ull(tcp->u_arg[arg + 1]) << sizeof(long) * 8)
+		| widen_to_ull(tcp->u_arg[arg]));
 #endif
 }
 
-SYS_FUNC(preadv)
+#include "xlat/rwf_flags.h"
+
+static int
+do_preadv(struct tcb *tcp, const int flags_arg)
 {
 	if (entering(tcp)) {
 		printfd(tcp, tcp->u_arg[0]);
@@ -225,21 +220,50 @@
 				tcp->u_rval);
 		tprintf(", %lu, ", tcp->u_arg[2]);
 		print_lld_from_low_high_val(tcp, 3);
+		if (flags_arg >= 0) {
+			tprints(", ");
+			printflags(rwf_flags, tcp->u_arg[flags_arg], "RWF_???");
+		}
 	}
 	return 0;
 }
 
-SYS_FUNC(pwritev)
+SYS_FUNC(preadv)
+{
+	return do_preadv(tcp, -1);
+}
+
+SYS_FUNC(preadv2)
+{
+	return do_preadv(tcp, 5);
+}
+
+static int
+do_pwritev(struct tcb *tcp, const int flags_arg)
 {
 	printfd(tcp, tcp->u_arg[0]);
 	tprints(", ");
 	tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1], 1);
 	tprintf(", %lu, ", tcp->u_arg[2]);
 	print_lld_from_low_high_val(tcp, 3);
+	if (flags_arg >= 0) {
+		tprints(", ");
+		printflags(rwf_flags, tcp->u_arg[flags_arg], "RWF_???");
+	}
 
 	return RVAL_DECODED;
 }
 
+SYS_FUNC(pwritev)
+{
+	return do_pwritev(tcp, -1);
+}
+
+SYS_FUNC(pwritev2)
+{
+	return do_pwritev(tcp, 5);
+}
+
 #include "xlat/splice_flags.h"
 
 SYS_FUNC(tee)
diff --git a/ioctl.c b/ioctl.c
index f70dc44..e4b20d9 100644
--- a/ioctl.c
+++ b/ioctl.c
@@ -91,7 +91,7 @@
 	if (_IOC_DIR(code) == _IOC_WRITE) {
 		if (nr >= 0xc0 && nr <= 0xc0 + 0x3f) {
 			tprints("EVIOCSABS(");
-			printxval(evdev_abs, nr - 0xc0, "EV_???");
+			printxval(evdev_abs, nr - 0xc0, "ABS_???");
 			tprints(")");
 			return 1;
 		}
@@ -231,8 +231,17 @@
 
 	switch (_IOC_TYPE(code)) {
 #if defined(ALPHA) || defined(POWERPC)
-	case 'f': case 't': case 'T':
+	case 'f': {
+		int ret = file_ioctl(tcp, code, arg);
+		if (ret != RVAL_DECODED)
+			return ret;
+	}
+	case 't':
+	case 'T':
+		return term_ioctl(tcp, code, arg);
 #else /* !ALPHA */
+	case 'f':
+		return file_ioctl(tcp, code, arg);
 	case 0x54:
 #endif /* !ALPHA */
 		return term_ioctl(tcp, code, arg);
@@ -241,9 +250,11 @@
 	case 'p':
 		return rtc_ioctl(tcp, code, arg);
 	case 0x03:
+		return hdio_ioctl(tcp, code, arg);
 	case 0x12:
-	case 'X':
 		return block_ioctl(tcp, code, arg);
+	case 'X':
+		return fs_x_ioctl(tcp, code, arg);
 #ifdef HAVE_SCSI_SG_H
 	case 0x22:
 		return scsi_ioctl(tcp, code, arg);
@@ -263,6 +274,14 @@
 	case 'E':
 		return evdev_ioctl(tcp, code, arg);
 #endif
+#ifdef HAVE_LINUX_USERFAULTFD_H
+	case 0xaa:
+		return uffdio_ioctl(tcp, code, arg);
+#endif
+#ifdef HAVE_LINUX_BTRFS_H
+	case 0x94:
+		return btrfs_ioctl(tcp, code, arg);
+#endif
 	default:
 		break;
 	}
diff --git a/ioctl_redefs1.h b/ioctl_redefs1.h
new file mode 100644
index 0000000..4214b1f
--- /dev/null
+++ b/ioctl_redefs1.h
@@ -0,0 +1,1536 @@
+#ifdef AGPIOC_ALLOCATE
+# undef AGPIOC_ALLOCATE
+# define AGPIOC_ALLOCATE 0xc0044106
+#endif
+#ifdef AGPIOC_BIND
+# undef AGPIOC_BIND
+# define AGPIOC_BIND 0x40044108
+#endif
+#ifdef AGPIOC_INFO
+# undef AGPIOC_INFO
+# define AGPIOC_INFO 0x80044100
+#endif
+#ifdef AGPIOC_PROTECT
+# undef AGPIOC_PROTECT
+# define AGPIOC_PROTECT 0x40044105
+#endif
+#ifdef AGPIOC_RESERVE
+# undef AGPIOC_RESERVE
+# define AGPIOC_RESERVE 0x40044104
+#endif
+#ifdef AGPIOC_SETUP
+# undef AGPIOC_SETUP
+# define AGPIOC_SETUP 0x40044103
+#endif
+#ifdef AGPIOC_UNBIND
+# undef AGPIOC_UNBIND
+# define AGPIOC_UNBIND 0x40044109
+#endif
+#ifdef ASHMEM_SET_PROT_MASK
+# undef ASHMEM_SET_PROT_MASK
+# define ASHMEM_SET_PROT_MASK 0x40047705
+#endif
+#ifdef ASHMEM_SET_SIZE
+# undef ASHMEM_SET_SIZE
+# define ASHMEM_SET_SIZE 0x40047703
+#endif
+#ifdef ATM_ADDADDR
+# undef ATM_ADDADDR
+# define ATM_ADDADDR 0x400c6188
+#endif
+#ifdef ATM_ADDLECSADDR
+# undef ATM_ADDLECSADDR
+# define ATM_ADDLECSADDR 0x400c618e
+#endif
+#ifdef ATM_ADDPARTY
+# undef ATM_ADDPARTY
+# define ATM_ADDPARTY 0x400861f4
+#endif
+#ifdef ATM_DELADDR
+# undef ATM_DELADDR
+# define ATM_DELADDR 0x400c6189
+#endif
+#ifdef ATM_DELLECSADDR
+# undef ATM_DELLECSADDR
+# define ATM_DELLECSADDR 0x400c618f
+#endif
+#ifdef ATM_GETADDR
+# undef ATM_GETADDR
+# define ATM_GETADDR 0x400c6186
+#endif
+#ifdef ATM_GETCIRANGE
+# undef ATM_GETCIRANGE
+# define ATM_GETCIRANGE 0x400c618a
+#endif
+#ifdef ATM_GETESI
+# undef ATM_GETESI
+# define ATM_GETESI 0x400c6185
+#endif
+#ifdef ATM_GETLECSADDR
+# undef ATM_GETLECSADDR
+# define ATM_GETLECSADDR 0x400c6190
+#endif
+#ifdef ATM_GETLINKRATE
+# undef ATM_GETLINKRATE
+# define ATM_GETLINKRATE 0x400c6181
+#endif
+#ifdef ATM_GETLOOP
+# undef ATM_GETLOOP
+# define ATM_GETLOOP 0x400c6152
+#endif
+#ifdef ATM_GETNAMES
+# undef ATM_GETNAMES
+# define ATM_GETNAMES 0x40086183
+#endif
+#ifdef ATM_GETSTAT
+# undef ATM_GETSTAT
+# define ATM_GETSTAT 0x400c6150
+#endif
+#ifdef ATM_GETSTATZ
+# undef ATM_GETSTATZ
+# define ATM_GETSTATZ 0x400c6151
+#endif
+#ifdef ATM_GETTYPE
+# undef ATM_GETTYPE
+# define ATM_GETTYPE 0x400c6184
+#endif
+#ifdef ATM_QUERYLOOP
+# undef ATM_QUERYLOOP
+# define ATM_QUERYLOOP 0x400c6154
+#endif
+#ifdef ATM_RSTADDR
+# undef ATM_RSTADDR
+# define ATM_RSTADDR 0x400c6187
+#endif
+#ifdef ATM_SETCIRANGE
+# undef ATM_SETCIRANGE
+# define ATM_SETCIRANGE 0x400c618b
+#endif
+#ifdef ATM_SETESI
+# undef ATM_SETESI
+# define ATM_SETESI 0x400c618c
+#endif
+#ifdef ATM_SETESIF
+# undef ATM_SETESIF
+# define ATM_SETESIF 0x400c618d
+#endif
+#ifdef ATM_SETLOOP
+# undef ATM_SETLOOP
+# define ATM_SETLOOP 0x400c6153
+#endif
+#ifdef AUTOFS_IOC_SETTIMEOUT
+# undef AUTOFS_IOC_SETTIMEOUT
+# define AUTOFS_IOC_SETTIMEOUT 0xc0049364
+#endif
+#ifdef BLKBSZGET
+# undef BLKBSZGET
+# define BLKBSZGET 0x80041270
+#endif
+#ifdef BLKBSZSET
+# undef BLKBSZSET
+# define BLKBSZSET 0x40041271
+#endif
+#ifdef BLKGETSIZE64
+# undef BLKGETSIZE64
+# define BLKGETSIZE64 0x80041272
+#endif
+#ifdef BLKTRACESETUP
+# undef BLKTRACESETUP
+# define BLKTRACESETUP 0xc0401273
+#endif
+#ifdef BR_ATTEMPT_ACQUIRE
+# undef BR_ATTEMPT_ACQUIRE
+# define BR_ATTEMPT_ACQUIRE 0x8014720b
+#endif
+#ifdef BTRFS_IOC_DEV_REPLACE
+# undef BTRFS_IOC_DEV_REPLACE
+# define BTRFS_IOC_DEV_REPLACE 0xca249435
+#endif
+#ifdef BTRFS_IOC_SEND
+# undef BTRFS_IOC_SEND
+# define BTRFS_IOC_SEND 0x40449426
+#endif
+#ifdef BTRFS_IOC_SET_RECEIVED_SUBVOL
+# undef BTRFS_IOC_SET_RECEIVED_SUBVOL
+# define BTRFS_IOC_SET_RECEIVED_SUBVOL 0xc0c09425
+#endif
+#ifdef CAPI_MANUFACTURER_CMD
+# undef CAPI_MANUFACTURER_CMD
+# define CAPI_MANUFACTURER_CMD 0xc0084320
+#endif
+#ifdef CCISS_BIG_PASSTHRU
+# undef CCISS_BIG_PASSTHRU
+# define CCISS_BIG_PASSTHRU 0xc0584212
+#endif
+#ifdef CCISS_PASSTHRU
+# undef CCISS_PASSTHRU
+# define CCISS_PASSTHRU 0xc054420b
+#endif
+#ifdef CHIOGSTATUS
+# undef CHIOGSTATUS
+# define CHIOGSTATUS 0x40086308
+#endif
+#ifdef CIOC_KERNEL_VERSION
+# undef CIOC_KERNEL_VERSION
+# define CIOC_KERNEL_VERSION 0xc004630a
+#endif
+#ifdef CM_IOCGATR
+# undef CM_IOCGATR
+# define CM_IOCGATR 0xc0046301
+#endif
+#ifdef CM_IOCGSTATUS
+# undef CM_IOCGSTATUS
+# define CM_IOCGSTATUS 0x80046300
+#endif
+#ifdef CM_IOCSPTS
+# undef CM_IOCSPTS
+# define CM_IOCSPTS 0x40046302
+#endif
+#ifdef CM_IOSDBGLVL
+# undef CM_IOSDBGLVL
+# define CM_IOSDBGLVL 0x400463fa
+#endif
+#ifdef DRM_IOCTL_ADD_BUFS
+# undef DRM_IOCTL_ADD_BUFS
+# define DRM_IOCTL_ADD_BUFS 0xc0186416
+#endif
+#ifdef DRM_IOCTL_ADD_MAP
+# undef DRM_IOCTL_ADD_MAP
+# define DRM_IOCTL_ADD_MAP 0xc0186415
+#endif
+#ifdef DRM_IOCTL_AGP_ALLOC
+# undef DRM_IOCTL_AGP_ALLOC
+# define DRM_IOCTL_AGP_ALLOC 0xc0106434
+#endif
+#ifdef DRM_IOCTL_AGP_BIND
+# undef DRM_IOCTL_AGP_BIND
+# define DRM_IOCTL_AGP_BIND 0x40086436
+#endif
+#ifdef DRM_IOCTL_AGP_ENABLE
+# undef DRM_IOCTL_AGP_ENABLE
+# define DRM_IOCTL_AGP_ENABLE 0x40046432
+#endif
+#ifdef DRM_IOCTL_AGP_FREE
+# undef DRM_IOCTL_AGP_FREE
+# define DRM_IOCTL_AGP_FREE 0x40106435
+#endif
+#ifdef DRM_IOCTL_AGP_INFO
+# undef DRM_IOCTL_AGP_INFO
+# define DRM_IOCTL_AGP_INFO 0x80206433
+#endif
+#ifdef DRM_IOCTL_AGP_UNBIND
+# undef DRM_IOCTL_AGP_UNBIND
+# define DRM_IOCTL_AGP_UNBIND 0x40086437
+#endif
+#ifdef DRM_IOCTL_AMDGPU_GEM_METADATA
+# undef DRM_IOCTL_AMDGPU_GEM_METADATA
+# define DRM_IOCTL_AMDGPU_GEM_METADATA 0xc11c6446
+#endif
+#ifdef DRM_IOCTL_DMA
+# undef DRM_IOCTL_DMA
+# define DRM_IOCTL_DMA 0xc0286429
+#endif
+#ifdef DRM_IOCTL_FREE_BUFS
+# undef DRM_IOCTL_FREE_BUFS
+# define DRM_IOCTL_FREE_BUFS 0x4008641a
+#endif
+#ifdef DRM_IOCTL_GET_CLIENT
+# undef DRM_IOCTL_GET_CLIENT
+# define DRM_IOCTL_GET_CLIENT 0xc0186405
+#endif
+#ifdef DRM_IOCTL_GET_MAP
+# undef DRM_IOCTL_GET_MAP
+# define DRM_IOCTL_GET_MAP 0xc0186404
+#endif
+#ifdef DRM_IOCTL_GET_SAREA_CTX
+# undef DRM_IOCTL_GET_SAREA_CTX
+# define DRM_IOCTL_GET_SAREA_CTX 0xc008641d
+#endif
+#ifdef DRM_IOCTL_GET_STATS
+# undef DRM_IOCTL_GET_STATS
+# define DRM_IOCTL_GET_STATS 0x807c6406
+#endif
+#ifdef DRM_IOCTL_GET_UNIQUE
+# undef DRM_IOCTL_GET_UNIQUE
+# define DRM_IOCTL_GET_UNIQUE 0xc0086401
+#endif
+#ifdef DRM_IOCTL_I810_COPY
+# undef DRM_IOCTL_I810_COPY
+# define DRM_IOCTL_I810_COPY 0x400c6447
+#endif
+#ifdef DRM_IOCTL_I810_GETBUF
+# undef DRM_IOCTL_I810_GETBUF
+# define DRM_IOCTL_I810_GETBUF 0xc0106445
+#endif
+#ifdef DRM_IOCTL_I810_MC
+# undef DRM_IOCTL_I810_MC
+# define DRM_IOCTL_I810_MC 0x4014644c
+#endif
+#ifdef DRM_IOCTL_I915_ALLOC
+# undef DRM_IOCTL_I915_ALLOC
+# define DRM_IOCTL_I915_ALLOC 0xc0106448
+#endif
+#ifdef DRM_IOCTL_I915_BATCHBUFFER
+# undef DRM_IOCTL_I915_BATCHBUFFER
+# define DRM_IOCTL_I915_BATCHBUFFER 0x40186443
+#endif
+#ifdef DRM_IOCTL_I915_CMDBUFFER
+# undef DRM_IOCTL_I915_CMDBUFFER
+# define DRM_IOCTL_I915_CMDBUFFER 0x4018644b
+#endif
+#ifdef DRM_IOCTL_I915_GETPARAM
+# undef DRM_IOCTL_I915_GETPARAM
+# define DRM_IOCTL_I915_GETPARAM 0xc0086446
+#endif
+#ifdef DRM_IOCTL_I915_IRQ_EMIT
+# undef DRM_IOCTL_I915_IRQ_EMIT
+# define DRM_IOCTL_I915_IRQ_EMIT 0xc0046444
+#endif
+#ifdef DRM_IOCTL_INFO_BUFS
+# undef DRM_IOCTL_INFO_BUFS
+# define DRM_IOCTL_INFO_BUFS 0xc0086418
+#endif
+#ifdef DRM_IOCTL_MAP_BUFS
+# undef DRM_IOCTL_MAP_BUFS
+# define DRM_IOCTL_MAP_BUFS 0xc00c6419
+#endif
+#ifdef DRM_IOCTL_MARK_BUFS
+# undef DRM_IOCTL_MARK_BUFS
+# define DRM_IOCTL_MARK_BUFS 0x40186417
+#endif
+#ifdef DRM_IOCTL_MGA_DMA_BOOTSTRAP
+# undef DRM_IOCTL_MGA_DMA_BOOTSTRAP
+# define DRM_IOCTL_MGA_DMA_BOOTSTRAP 0xc01c644c
+#endif
+#ifdef DRM_IOCTL_MGA_GETPARAM
+# undef DRM_IOCTL_MGA_GETPARAM
+# define DRM_IOCTL_MGA_GETPARAM 0xc0086449
+#endif
+#ifdef DRM_IOCTL_MGA_INIT
+# undef DRM_IOCTL_MGA_INIT
+# define DRM_IOCTL_MGA_INIT 0x405c6440
+#endif
+#ifdef DRM_IOCTL_MODE_ADDFB2
+# undef DRM_IOCTL_MODE_ADDFB2
+# define DRM_IOCTL_MODE_ADDFB2 0xc06464b8
+#endif
+#ifdef DRM_IOCTL_MODE_GETPLANERESOURCES
+# undef DRM_IOCTL_MODE_GETPLANERESOURCES
+# define DRM_IOCTL_MODE_GETPLANERESOURCES 0xc00c64b5
+#endif
+#ifdef DRM_IOCTL_MODE_OBJ_GETPROPERTIES
+# undef DRM_IOCTL_MODE_OBJ_GETPROPERTIES
+# define DRM_IOCTL_MODE_OBJ_GETPROPERTIES 0xc01c64b9
+#endif
+#ifdef DRM_IOCTL_MODE_OBJ_SETPROPERTY
+# undef DRM_IOCTL_MODE_OBJ_SETPROPERTY
+# define DRM_IOCTL_MODE_OBJ_SETPROPERTY 0xc01464ba
+#endif
+#ifdef DRM_IOCTL_R128_DEPTH
+# undef DRM_IOCTL_R128_DEPTH
+# define DRM_IOCTL_R128_DEPTH 0x4018644c
+#endif
+#ifdef DRM_IOCTL_R128_GETPARAM
+# undef DRM_IOCTL_R128_GETPARAM
+# define DRM_IOCTL_R128_GETPARAM 0xc0086452
+#endif
+#ifdef DRM_IOCTL_R128_INIT
+# undef DRM_IOCTL_R128_INIT
+# define DRM_IOCTL_R128_INIT 0x40586440
+#endif
+#ifdef DRM_IOCTL_R128_STIPPLE
+# undef DRM_IOCTL_R128_STIPPLE
+# define DRM_IOCTL_R128_STIPPLE 0x4004644d
+#endif
+#ifdef DRM_IOCTL_RADEON_ALLOC
+# undef DRM_IOCTL_RADEON_ALLOC
+# define DRM_IOCTL_RADEON_ALLOC 0xc0106453
+#endif
+#ifdef DRM_IOCTL_RADEON_CLEAR
+# undef DRM_IOCTL_RADEON_CLEAR
+# define DRM_IOCTL_RADEON_CLEAR 0x40186448
+#endif
+#ifdef DRM_IOCTL_RADEON_CMDBUF
+# undef DRM_IOCTL_RADEON_CMDBUF
+# define DRM_IOCTL_RADEON_CMDBUF 0x40106450
+#endif
+#ifdef DRM_IOCTL_RADEON_CP_INIT
+# undef DRM_IOCTL_RADEON_CP_INIT
+# define DRM_IOCTL_RADEON_CP_INIT 0x40546440
+#endif
+#ifdef DRM_IOCTL_RADEON_GEM_CREATE
+# undef DRM_IOCTL_RADEON_GEM_CREATE
+# define DRM_IOCTL_RADEON_GEM_CREATE 0xc01c645d
+#endif
+#ifdef DRM_IOCTL_RADEON_GETPARAM
+# undef DRM_IOCTL_RADEON_GETPARAM
+# define DRM_IOCTL_RADEON_GETPARAM 0xc0086451
+#endif
+#ifdef DRM_IOCTL_RADEON_IRQ_EMIT
+# undef DRM_IOCTL_RADEON_IRQ_EMIT
+# define DRM_IOCTL_RADEON_IRQ_EMIT 0xc0046456
+#endif
+#ifdef DRM_IOCTL_RADEON_SETPARAM
+# undef DRM_IOCTL_RADEON_SETPARAM
+# define DRM_IOCTL_RADEON_SETPARAM 0x400c6459
+#endif
+#ifdef DRM_IOCTL_RADEON_STIPPLE
+# undef DRM_IOCTL_RADEON_STIPPLE
+# define DRM_IOCTL_RADEON_STIPPLE 0x4004644c
+#endif
+#ifdef DRM_IOCTL_RADEON_TEXTURE
+# undef DRM_IOCTL_RADEON_TEXTURE
+# define DRM_IOCTL_RADEON_TEXTURE 0xc018644e
+#endif
+#ifdef DRM_IOCTL_RADEON_VERTEX2
+# undef DRM_IOCTL_RADEON_VERTEX2
+# define DRM_IOCTL_RADEON_VERTEX2 0x4018644f
+#endif
+#ifdef DRM_IOCTL_RES_CTX
+# undef DRM_IOCTL_RES_CTX
+# define DRM_IOCTL_RES_CTX 0xc0086426
+#endif
+#ifdef DRM_IOCTL_RM_MAP
+# undef DRM_IOCTL_RM_MAP
+# define DRM_IOCTL_RM_MAP 0x4018641b
+#endif
+#ifdef DRM_IOCTL_SAVAGE_BCI_CMDBUF
+# undef DRM_IOCTL_SAVAGE_BCI_CMDBUF
+# define DRM_IOCTL_SAVAGE_BCI_CMDBUF 0x40246441
+#endif
+#ifdef DRM_IOCTL_SAVAGE_BCI_INIT
+# undef DRM_IOCTL_SAVAGE_BCI_INIT
+# define DRM_IOCTL_SAVAGE_BCI_INIT 0x40506440
+#endif
+#ifdef DRM_IOCTL_SET_SAREA_CTX
+# undef DRM_IOCTL_SET_SAREA_CTX
+# define DRM_IOCTL_SET_SAREA_CTX 0x4008641c
+#endif
+#ifdef DRM_IOCTL_SET_UNIQUE
+# undef DRM_IOCTL_SET_UNIQUE
+# define DRM_IOCTL_SET_UNIQUE 0x40086410
+#endif
+#ifdef DRM_IOCTL_SG_ALLOC
+# undef DRM_IOCTL_SG_ALLOC
+# define DRM_IOCTL_SG_ALLOC 0xc0086438
+#endif
+#ifdef DRM_IOCTL_SG_FREE
+# undef DRM_IOCTL_SG_FREE
+# define DRM_IOCTL_SG_FREE 0x40086439
+#endif
+#ifdef DRM_IOCTL_SIS_AGP_ALLOC
+# undef DRM_IOCTL_SIS_AGP_ALLOC
+# define DRM_IOCTL_SIS_AGP_ALLOC 0xc0106454
+#endif
+#ifdef DRM_IOCTL_SIS_AGP_FREE
+# undef DRM_IOCTL_SIS_AGP_FREE
+# define DRM_IOCTL_SIS_AGP_FREE 0x40106455
+#endif
+#ifdef DRM_IOCTL_SIS_AGP_INIT
+# undef DRM_IOCTL_SIS_AGP_INIT
+# define DRM_IOCTL_SIS_AGP_INIT 0xc0086453
+#endif
+#ifdef DRM_IOCTL_SIS_FB_ALLOC
+# undef DRM_IOCTL_SIS_FB_ALLOC
+# define DRM_IOCTL_SIS_FB_ALLOC 0xc0106444
+#endif
+#ifdef DRM_IOCTL_SIS_FB_FREE
+# undef DRM_IOCTL_SIS_FB_FREE
+# define DRM_IOCTL_SIS_FB_FREE 0x40106445
+#endif
+#ifdef DRM_IOCTL_SIS_FB_INIT
+# undef DRM_IOCTL_SIS_FB_INIT
+# define DRM_IOCTL_SIS_FB_INIT 0x40086456
+#endif
+#ifdef DRM_IOCTL_UPDATE_DRAW
+# undef DRM_IOCTL_UPDATE_DRAW
+# define DRM_IOCTL_UPDATE_DRAW 0x4014643f
+#endif
+#ifdef DRM_IOCTL_VERSION
+# undef DRM_IOCTL_VERSION
+# define DRM_IOCTL_VERSION 0xc0246400
+#endif
+#ifdef DRM_IOCTL_VIA_ALLOCMEM
+# undef DRM_IOCTL_VIA_ALLOCMEM
+# define DRM_IOCTL_VIA_ALLOCMEM 0xc0146440
+#endif
+#ifdef DRM_IOCTL_VIA_CMDBUFFER
+# undef DRM_IOCTL_VIA_CMDBUFFER
+# define DRM_IOCTL_VIA_CMDBUFFER 0x40086448
+#endif
+#ifdef DRM_IOCTL_VIA_DMA_BLIT
+# undef DRM_IOCTL_VIA_DMA_BLIT
+# define DRM_IOCTL_VIA_DMA_BLIT 0x4028644e
+#endif
+#ifdef DRM_IOCTL_VIA_DMA_INIT
+# undef DRM_IOCTL_VIA_DMA_INIT
+# define DRM_IOCTL_VIA_DMA_INIT 0xc0106447
+#endif
+#ifdef DRM_IOCTL_VIA_FREEMEM
+# undef DRM_IOCTL_VIA_FREEMEM
+# define DRM_IOCTL_VIA_FREEMEM 0x40146441
+#endif
+#ifdef DRM_IOCTL_VIA_MAP_INIT
+# undef DRM_IOCTL_VIA_MAP_INIT
+# define DRM_IOCTL_VIA_MAP_INIT 0xc0146444
+#endif
+#ifdef DRM_IOCTL_VIA_PCICMD
+# undef DRM_IOCTL_VIA_PCICMD
+# define DRM_IOCTL_VIA_PCICMD 0x4008644a
+#endif
+#ifdef DRM_IOCTL_VIA_WAIT_IRQ
+# undef DRM_IOCTL_VIA_WAIT_IRQ
+# define DRM_IOCTL_VIA_WAIT_IRQ 0xc010644d
+#endif
+#ifdef DRM_IOCTL_WAIT_VBLANK
+# undef DRM_IOCTL_WAIT_VBLANK
+# define DRM_IOCTL_WAIT_VBLANK 0xc010643a
+#endif
+#ifdef ENI_MEMDUMP
+# undef ENI_MEMDUMP
+# define ENI_MEMDUMP 0x400c6160
+#endif
+#ifdef ENI_SETMULT
+# undef ENI_SETMULT
+# define ENI_SETMULT 0x400c6167
+#endif
+#ifdef EVIOCSFF
+# undef EVIOCSFF
+# define EVIOCSFF 0x402c4580
+#endif
+#ifdef FBIO_CURSOR
+# undef FBIO_CURSOR
+# define FBIO_CURSOR 0xc0484608
+#endif
+#ifdef FBIO_GETCONTROL2
+# undef FBIO_GETCONTROL2
+# define FBIO_GETCONTROL2 0x80044689
+#endif
+#ifdef FBIO_RADEON_GET_MIRROR
+# undef FBIO_RADEON_GET_MIRROR
+# define FBIO_RADEON_GET_MIRROR 0x80044003
+#endif
+#ifdef FBIO_RADEON_SET_MIRROR
+# undef FBIO_RADEON_SET_MIRROR
+# define FBIO_RADEON_SET_MIRROR 0x40044004
+#endif
+#ifdef FDDEFPRM
+# undef FDDEFPRM
+# define FDDEFPRM 0x401c0243
+#endif
+#ifdef FDGETDRVPRM
+# undef FDGETDRVPRM
+# define FDGETDRVPRM 0x80580211
+#endif
+#ifdef FDGETDRVSTAT
+# undef FDGETDRVSTAT
+# define FDGETDRVSTAT 0x80340212
+#endif
+#ifdef FDGETFDCSTAT
+# undef FDGETFDCSTAT
+# define FDGETFDCSTAT 0x80200215
+#endif
+#ifdef FDGETPRM
+# undef FDGETPRM
+# define FDGETPRM 0x801c0204
+#endif
+#ifdef FDPOLLDRVSTAT
+# undef FDPOLLDRVSTAT
+# define FDPOLLDRVSTAT 0x80340213
+#endif
+#ifdef FDSETDRVPRM
+# undef FDSETDRVPRM
+# define FDSETDRVPRM 0x40580290
+#endif
+#ifdef FDSETPRM
+# undef FDSETPRM
+# define FDSETPRM 0x401c0242
+#endif
+#ifdef FDWERRORGET
+# undef FDWERRORGET
+# define FDWERRORGET 0x80180217
+#endif
+#ifdef FE_GET_PROPERTY
+# undef FE_GET_PROPERTY
+# define FE_GET_PROPERTY 0x80086f53
+#endif
+#ifdef FE_SET_PROPERTY
+# undef FE_SET_PROPERTY
+# define FE_SET_PROPERTY 0x40086f52
+#endif
+#ifdef FS_IOC_GETFLAGS
+# undef FS_IOC_GETFLAGS
+# define FS_IOC_GETFLAGS 0x80046601
+#endif
+#ifdef FS_IOC_GETVERSION
+# undef FS_IOC_GETVERSION
+# define FS_IOC_GETVERSION 0x80047601
+#endif
+#ifdef FS_IOC_SETFLAGS
+# undef FS_IOC_SETFLAGS
+# define FS_IOC_SETFLAGS 0x40046602
+#endif
+#ifdef FS_IOC_SETVERSION
+# undef FS_IOC_SETVERSION
+# define FS_IOC_SETVERSION 0x40047602
+#endif
+#ifdef FW_CDEV_IOC_CREATE_ISO_CONTEXT
+# undef FW_CDEV_IOC_CREATE_ISO_CONTEXT
+# define FW_CDEV_IOC_CREATE_ISO_CONTEXT 0xc01c2308
+#endif
+#ifdef FW_CDEV_IOC_GET_CYCLE_TIMER
+# undef FW_CDEV_IOC_GET_CYCLE_TIMER
+# define FW_CDEV_IOC_GET_CYCLE_TIMER 0x800c230c
+#endif
+#ifdef FW_CDEV_IOC_GET_CYCLE_TIMER2
+# undef FW_CDEV_IOC_GET_CYCLE_TIMER2
+# define FW_CDEV_IOC_GET_CYCLE_TIMER2 0xc0142314
+#endif
+#ifdef FW_CDEV_IOC_GET_INFO
+# undef FW_CDEV_IOC_GET_INFO
+# define FW_CDEV_IOC_GET_INFO 0xc0242300
+#endif
+#ifdef FW_CDEV_IOC_SEND_BROADCAST_REQUEST
+# undef FW_CDEV_IOC_SEND_BROADCAST_REQUEST
+# define FW_CDEV_IOC_SEND_BROADCAST_REQUEST 0x40242312
+#endif
+#ifdef FW_CDEV_IOC_SEND_PHY_PACKET
+# undef FW_CDEV_IOC_SEND_PHY_PACKET
+# define FW_CDEV_IOC_SEND_PHY_PACKET 0xc0142315
+#endif
+#ifdef FW_CDEV_IOC_SEND_REQUEST
+# undef FW_CDEV_IOC_SEND_REQUEST
+# define FW_CDEV_IOC_SEND_REQUEST 0x40242301
+#endif
+#ifdef FW_CDEV_IOC_SEND_RESPONSE
+# undef FW_CDEV_IOC_SEND_RESPONSE
+# define FW_CDEV_IOC_SEND_RESPONSE 0x40142304
+#endif
+#ifdef FW_CDEV_IOC_SET_ISO_CHANNELS
+# undef FW_CDEV_IOC_SET_ISO_CHANNELS
+# define FW_CDEV_IOC_SET_ISO_CHANNELS 0x400c2317
+#endif
+#ifdef HE_GET_REG
+# undef HE_GET_REG
+# define HE_GET_REG 0x400c6160
+#endif
+#ifdef HPET_INFO
+# undef HPET_INFO
+# define HPET_INFO 0x800c6803
+#endif
+#ifdef HPET_IRQFREQ
+# undef HPET_IRQFREQ
+# define HPET_IRQFREQ 0x40046806
+#endif
+#ifdef I2OHRTGET
+# undef I2OHRTGET
+# define I2OHRTGET 0xc00c6901
+#endif
+#ifdef I2OHTML
+# undef I2OHTML
+# define I2OHTML 0xc01c6909
+#endif
+#ifdef I2OLCTGET
+# undef I2OLCTGET
+# define I2OLCTGET 0xc00c6902
+#endif
+#ifdef I2OPARMGET
+# undef I2OPARMGET
+# define I2OPARMGET 0xc0186904
+#endif
+#ifdef I2OPARMSET
+# undef I2OPARMSET
+# define I2OPARMSET 0xc0186903
+#endif
+#ifdef I2OPASSTHRU
+# undef I2OPASSTHRU
+# define I2OPASSTHRU 0x8008690c
+#endif
+#ifdef I2OSWDEL
+# undef I2OSWDEL
+# define I2OSWDEL 0xc01c6907
+#endif
+#ifdef I2OSWDL
+# undef I2OSWDL
+# define I2OSWDL 0xc01c6905
+#endif
+#ifdef I2OSWUL
+# undef I2OSWUL
+# define I2OSWUL 0xc01c6906
+#endif
+#ifdef I8K_FN_STATUS
+# undef I8K_FN_STATUS
+# define I8K_FN_STATUS 0x80046983
+#endif
+#ifdef I8K_GET_FAN
+# undef I8K_GET_FAN
+# define I8K_GET_FAN 0xc0046986
+#endif
+#ifdef I8K_GET_SPEED
+# undef I8K_GET_SPEED
+# define I8K_GET_SPEED 0xc0046985
+#endif
+#ifdef I8K_GET_TEMP
+# undef I8K_GET_TEMP
+# define I8K_GET_TEMP 0x80046984
+#endif
+#ifdef I8K_POWER_STATUS
+# undef I8K_POWER_STATUS
+# define I8K_POWER_STATUS 0x80046982
+#endif
+#ifdef I8K_SET_FAN
+# undef I8K_SET_FAN
+# define I8K_SET_FAN 0xc0046987
+#endif
+#ifdef IDT77105_GETSTAT
+# undef IDT77105_GETSTAT
+# define IDT77105_GETSTAT 0x400c6132
+#endif
+#ifdef IDT77105_GETSTATZ
+# undef IDT77105_GETSTATZ
+# define IDT77105_GETSTATZ 0x400c6133
+#endif
+#ifdef IOCTL_GNTDEV_GRANT_COPY
+# undef IOCTL_GNTDEV_GRANT_COPY
+# define IOCTL_GNTDEV_GRANT_COPY 0x00084708
+#endif
+#ifdef ION_IOC_ALLOC
+# undef ION_IOC_ALLOC
+# define ION_IOC_ALLOC 0xc0144900
+#endif
+#ifdef ION_IOC_CUSTOM
+# undef ION_IOC_CUSTOM
+# define ION_IOC_CUSTOM 0xc0084906
+#endif
+#ifdef IOW_READ
+# undef IOW_READ
+# define IOW_READ 0x4004c002
+#endif
+#ifdef IOW_WRITE
+# undef IOW_WRITE
+# define IOW_WRITE 0x4004c001
+#endif
+#ifdef IPMICTL_RECEIVE_MSG
+# undef IPMICTL_RECEIVE_MSG
+# define IPMICTL_RECEIVE_MSG 0xc018690c
+#endif
+#ifdef IPMICTL_RECEIVE_MSG_TRUNC
+# undef IPMICTL_RECEIVE_MSG_TRUNC
+# define IPMICTL_RECEIVE_MSG_TRUNC 0xc018690b
+#endif
+#ifdef IPMICTL_SEND_COMMAND
+# undef IPMICTL_SEND_COMMAND
+# define IPMICTL_SEND_COMMAND 0x8014690d
+#endif
+#ifdef IPMICTL_SEND_COMMAND_SETTIME
+# undef IPMICTL_SEND_COMMAND_SETTIME
+# define IPMICTL_SEND_COMMAND_SETTIME 0x801c6915
+#endif
+#ifdef IVTVFB_IOC_DMA_FRAME
+# undef IVTVFB_IOC_DMA_FRAME
+# define IVTVFB_IOC_DMA_FRAME 0x400c56c0
+#endif
+#ifdef IVTV_IOC_DMA_FRAME
+# undef IVTV_IOC_DMA_FRAME
+# define IVTV_IOC_DMA_FRAME 0x403856c0
+#endif
+#ifdef IXJCTL_CID
+# undef IXJCTL_CID
+# define IXJCTL_CID 0x800471d4
+#endif
+#ifdef IXJCTL_CIDCW
+# undef IXJCTL_CIDCW
+# define IXJCTL_CIDCW 0x400471d9
+#endif
+#ifdef IXJCTL_DRYBUFFER_READ
+# undef IXJCTL_DRYBUFFER_READ
+# define IXJCTL_DRYBUFFER_READ 0x800471e6
+#endif
+#ifdef IXJCTL_FILTER_CADENCE
+# undef IXJCTL_FILTER_CADENCE
+# define IXJCTL_FILTER_CADENCE 0x400471d6
+#endif
+#ifdef IXJCTL_FRAMES_READ
+# undef IXJCTL_FRAMES_READ
+# define IXJCTL_FRAMES_READ 0x800471e2
+#endif
+#ifdef IXJCTL_FRAMES_WRITTEN
+# undef IXJCTL_FRAMES_WRITTEN
+# define IXJCTL_FRAMES_WRITTEN 0x800471e3
+#endif
+#ifdef IXJCTL_INIT_TONE
+# undef IXJCTL_INIT_TONE
+# define IXJCTL_INIT_TONE 0x400471c9
+#endif
+#ifdef IXJCTL_READ_WAIT
+# undef IXJCTL_READ_WAIT
+# define IXJCTL_READ_WAIT 0x800471e4
+#endif
+#ifdef IXJCTL_SET_FILTER
+# undef IXJCTL_SET_FILTER
+# define IXJCTL_SET_FILTER 0x400471c7
+#endif
+#ifdef IXJCTL_SET_FILTER_RAW
+# undef IXJCTL_SET_FILTER_RAW
+# define IXJCTL_SET_FILTER_RAW 0x400471dd
+#endif
+#ifdef IXJCTL_SIGCTL
+# undef IXJCTL_SIGCTL
+# define IXJCTL_SIGCTL 0x400471e9
+#endif
+#ifdef IXJCTL_TONE_CADENCE
+# undef IXJCTL_TONE_CADENCE
+# define IXJCTL_TONE_CADENCE 0x400471ca
+#endif
+#ifdef IXJCTL_VERSION
+# undef IXJCTL_VERSION
+# define IXJCTL_VERSION 0x800471da
+#endif
+#ifdef IXJCTL_WRITE_WAIT
+# undef IXJCTL_WRITE_WAIT
+# define IXJCTL_WRITE_WAIT 0x800471e5
+#endif
+#ifdef KCOV_INIT_TRACE
+# undef KCOV_INIT_TRACE
+# define KCOV_INIT_TRACE 0x80046301
+#endif
+#ifdef KVM_DIRTY_TLB
+# undef KVM_DIRTY_TLB
+# define KVM_DIRTY_TLB 0x400caeaa
+#endif
+#ifdef KVM_S390_STORE_STATUS
+# undef KVM_S390_STORE_STATUS
+# define KVM_S390_STORE_STATUS 0x4004ae95
+#endif
+#ifdef KVM_S390_VCPU_FAULT
+# undef KVM_S390_VCPU_FAULT
+# define KVM_S390_VCPU_FAULT 0x4004ae52
+#endif
+#ifdef MATROXFB_GET_ALL_OUTPUTS
+# undef MATROXFB_GET_ALL_OUTPUTS
+# define MATROXFB_GET_ALL_OUTPUTS 0x80046efb
+#endif
+#ifdef MATROXFB_GET_AVAILABLE_OUTPUTS
+# undef MATROXFB_GET_AVAILABLE_OUTPUTS
+# define MATROXFB_GET_AVAILABLE_OUTPUTS 0x80046ef9
+#endif
+#ifdef MATROXFB_GET_OUTPUT_CONNECTION
+# undef MATROXFB_GET_OUTPUT_CONNECTION
+# define MATROXFB_GET_OUTPUT_CONNECTION 0x80046ef8
+#endif
+#ifdef MATROXFB_GET_OUTPUT_MODE
+# undef MATROXFB_GET_OUTPUT_MODE
+# define MATROXFB_GET_OUTPUT_MODE 0xc0046efa
+#endif
+#ifdef MATROXFB_SET_OUTPUT_CONNECTION
+# undef MATROXFB_SET_OUTPUT_CONNECTION
+# define MATROXFB_SET_OUTPUT_CONNECTION 0x40046ef8
+#endif
+#ifdef MATROXFB_SET_OUTPUT_MODE
+# undef MATROXFB_SET_OUTPUT_MODE
+# define MATROXFB_SET_OUTPUT_MODE 0x40046efa
+#endif
+#ifdef MEDIA_IOC_ENUM_LINKS
+# undef MEDIA_IOC_ENUM_LINKS
+# define MEDIA_IOC_ENUM_LINKS 0xc01c7c02
+#endif
+#ifdef MEMREADOOB
+# undef MEMREADOOB
+# define MEMREADOOB 0xc00c4d04
+#endif
+#ifdef MEMWRITEOOB
+# undef MEMWRITEOOB
+# define MEMWRITEOOB 0xc00c4d03
+#endif
+#ifdef MGSL_IOCGPARAMS
+# undef MGSL_IOCGPARAMS
+# define MGSL_IOCGPARAMS 0x80206d01
+#endif
+#ifdef MGSL_IOCSPARAMS
+# undef MGSL_IOCSPARAMS
+# define MGSL_IOCSPARAMS 0x40206d00
+#endif
+#ifdef MIC_VIRTIO_ADD_DEVICE
+# undef MIC_VIRTIO_ADD_DEVICE
+# define MIC_VIRTIO_ADD_DEVICE 0xc0047301
+#endif
+#ifdef MIC_VIRTIO_CONFIG_CHANGE
+# undef MIC_VIRTIO_CONFIG_CHANGE
+# define MIC_VIRTIO_CONFIG_CHANGE 0xc0047305
+#endif
+#ifdef MIC_VIRTIO_COPY_DESC
+# undef MIC_VIRTIO_COPY_DESC
+# define MIC_VIRTIO_COPY_DESC 0xc0047302
+#endif
+#ifdef MMTIMER_GETCOUNTER
+# undef MMTIMER_GETCOUNTER
+# define MMTIMER_GETCOUNTER 0x80046d09
+#endif
+#ifdef MMTIMER_GETFREQ
+# undef MMTIMER_GETFREQ
+# define MMTIMER_GETFREQ 0x80046d02
+#endif
+#ifdef MMTIMER_GETRES
+# undef MMTIMER_GETRES
+# define MMTIMER_GETRES 0x80046d01
+#endif
+#ifdef MTIOCGET
+# undef MTIOCGET
+# define MTIOCGET 0x801c6d02
+#endif
+#ifdef MTIOCPOS
+# undef MTIOCPOS
+# define MTIOCPOS 0x80046d03
+#endif
+#ifdef MTRRIOC_ADD_ENTRY
+# undef MTRRIOC_ADD_ENTRY
+# define MTRRIOC_ADD_ENTRY 0x400c4d00
+#endif
+#ifdef MTRRIOC_ADD_PAGE_ENTRY
+# undef MTRRIOC_ADD_PAGE_ENTRY
+# define MTRRIOC_ADD_PAGE_ENTRY 0x400c4d05
+#endif
+#ifdef MTRRIOC_DEL_ENTRY
+# undef MTRRIOC_DEL_ENTRY
+# define MTRRIOC_DEL_ENTRY 0x400c4d02
+#endif
+#ifdef MTRRIOC_DEL_PAGE_ENTRY
+# undef MTRRIOC_DEL_PAGE_ENTRY
+# define MTRRIOC_DEL_PAGE_ENTRY 0x400c4d07
+#endif
+#ifdef MTRRIOC_GET_ENTRY
+# undef MTRRIOC_GET_ENTRY
+# define MTRRIOC_GET_ENTRY 0xc0104d03
+#endif
+#ifdef MTRRIOC_GET_PAGE_ENTRY
+# undef MTRRIOC_GET_PAGE_ENTRY
+# define MTRRIOC_GET_PAGE_ENTRY 0xc0104d08
+#endif
+#ifdef MTRRIOC_KILL_ENTRY
+# undef MTRRIOC_KILL_ENTRY
+# define MTRRIOC_KILL_ENTRY 0x400c4d04
+#endif
+#ifdef MTRRIOC_KILL_PAGE_ENTRY
+# undef MTRRIOC_KILL_PAGE_ENTRY
+# define MTRRIOC_KILL_PAGE_ENTRY 0x400c4d09
+#endif
+#ifdef MTRRIOC_SET_ENTRY
+# undef MTRRIOC_SET_ENTRY
+# define MTRRIOC_SET_ENTRY 0x400c4d01
+#endif
+#ifdef MTRRIOC_SET_PAGE_ENTRY
+# undef MTRRIOC_SET_PAGE_ENTRY
+# define MTRRIOC_SET_PAGE_ENTRY 0x400c4d06
+#endif
+#ifdef NCIUARTSETDRIVER
+# undef NCIUARTSETDRIVER
+# define NCIUARTSETDRIVER 0x40045500
+#endif
+#ifdef NCP_IOC_GET_FS_INFO_V2
+# undef NCP_IOC_GET_FS_INFO_V2
+# define NCP_IOC_GET_FS_INFO_V2 0xc0246e04
+#endif
+#ifdef NCP_IOC_GETMOUNTUID2
+# undef NCP_IOC_GETMOUNTUID2
+# define NCP_IOC_GETMOUNTUID2 0x40046e02
+#endif
+#ifdef NCP_IOC_GETOBJECTNAME
+# undef NCP_IOC_GETOBJECTNAME
+# define NCP_IOC_GETOBJECTNAME 0xc00c6e09
+#endif
+#ifdef NCP_IOC_GETPRIVATEDATA
+# undef NCP_IOC_GETPRIVATEDATA
+# define NCP_IOC_GETPRIVATEDATA 0xc0086e0a
+#endif
+#ifdef NCP_IOC_NCPREQUEST
+# undef NCP_IOC_NCPREQUEST
+# define NCP_IOC_NCPREQUEST 0x800c6e01
+#endif
+#ifdef NCP_IOC_SETOBJECTNAME
+# undef NCP_IOC_SETOBJECTNAME
+# define NCP_IOC_SETOBJECTNAME 0x800c6e09
+#endif
+#ifdef NCP_IOC_SETPRIVATEDATA
+# undef NCP_IOC_SETPRIVATEDATA
+# define NCP_IOC_SETPRIVATEDATA 0x80086e0a
+#endif
+#ifdef NS_GETPSTAT
+# undef NS_GETPSTAT
+# define NS_GETPSTAT 0xc00c6161
+#endif
+#ifdef NS_SETBUFLEV
+# undef NS_SETBUFLEV
+# define NS_SETBUFLEV 0x400c6162
+#endif
+#ifdef NVME_IOCTL_SUBMIT_IO
+# undef NVME_IOCTL_SUBMIT_IO
+# define NVME_IOCTL_SUBMIT_IO 0x402c4e42
+#endif
+#ifdef OMAPFB_MEMORY_READ
+# undef OMAPFB_MEMORY_READ
+# define OMAPFB_MEMORY_READ 0x80104f3a
+#endif
+#ifdef OSD_GET_CAPABILITY
+# undef OSD_GET_CAPABILITY
+# define OSD_GET_CAPABILITY 0x80086fa1
+#endif
+#ifdef OSD_SEND_CMD
+# undef OSD_SEND_CMD
+# define OSD_SEND_CMD 0x401c6fa0
+#endif
+#ifdef PERF_EVENT_IOC_ID
+# undef PERF_EVENT_IOC_ID
+# define PERF_EVENT_IOC_ID 0x80042407
+#endif
+#ifdef PERF_EVENT_IOC_SET_FILTER
+# undef PERF_EVENT_IOC_SET_FILTER
+# define PERF_EVENT_IOC_SET_FILTER 0x40042406
+#endif
+#ifdef PHN_GET_REG
+# undef PHN_GET_REG
+# define PHN_GET_REG 0xc0047000
+#endif
+#ifdef PHN_GET_REGS
+# undef PHN_GET_REGS
+# define PHN_GET_REGS 0xc0047002
+#endif
+#ifdef PHN_SET_REG
+# undef PHN_SET_REG
+# define PHN_SET_REG 0x40047001
+#endif
+#ifdef PHN_SET_REGS
+# undef PHN_SET_REGS
+# define PHN_SET_REGS 0x40047003
+#endif
+#ifdef PHONE_CAPABILITIES_CHECK
+# undef PHONE_CAPABILITIES_CHECK
+# define PHONE_CAPABILITIES_CHECK 0x40047182
+#endif
+#ifdef PHONE_CAPABILITIES_LIST
+# undef PHONE_CAPABILITIES_LIST
+# define PHONE_CAPABILITIES_LIST 0x80047181
+#endif
+#ifdef PHONE_QUERY_CODEC
+# undef PHONE_QUERY_CODEC
+# define PHONE_QUERY_CODEC 0xc00471a7
+#endif
+#ifdef PHONE_RING_START
+# undef PHONE_RING_START
+# define PHONE_RING_START 0x40047187
+#endif
+#ifdef PMU_IOC_CAN_SLEEP
+# undef PMU_IOC_CAN_SLEEP
+# define PMU_IOC_CAN_SLEEP 0x80044205
+#endif
+#ifdef PMU_IOC_GET_BACKLIGHT
+# undef PMU_IOC_GET_BACKLIGHT
+# define PMU_IOC_GET_BACKLIGHT 0x80044201
+#endif
+#ifdef PMU_IOC_GET_MODEL
+# undef PMU_IOC_GET_MODEL
+# define PMU_IOC_GET_MODEL 0x80044203
+#endif
+#ifdef PMU_IOC_GRAB_BACKLIGHT
+# undef PMU_IOC_GRAB_BACKLIGHT
+# define PMU_IOC_GRAB_BACKLIGHT 0x80044206
+#endif
+#ifdef PMU_IOC_HAS_ADB
+# undef PMU_IOC_HAS_ADB
+# define PMU_IOC_HAS_ADB 0x80044204
+#endif
+#ifdef PMU_IOC_SET_BACKLIGHT
+# undef PMU_IOC_SET_BACKLIGHT
+# define PMU_IOC_SET_BACKLIGHT 0x40044202
+#endif
+#ifdef PPGETTIME
+# undef PPGETTIME
+# define PPGETTIME 0x80087095
+#endif
+#ifdef PPPIOCGCOMPRESSORS
+# undef PPPIOCGCOMPRESSORS
+# define PPPIOCGCOMPRESSORS 0x80207486
+#endif
+#ifdef PPPIOCGIDLE
+# undef PPPIOCGIDLE
+# define PPPIOCGIDLE 0x8008743f
+#endif
+#ifdef PPPIOCSACTIVE
+# undef PPPIOCSACTIVE
+# define PPPIOCSACTIVE 0x40087446
+#endif
+#ifdef PPPIOCSCOMPRESS
+# undef PPPIOCSCOMPRESS
+# define PPPIOCSCOMPRESS 0x400c744d
+#endif
+#ifdef PPPIOCSPASS
+# undef PPPIOCSPASS
+# define PPPIOCSPASS 0x40087447
+#endif
+#ifdef PPPOEIOCSFWD
+# undef PPPOEIOCSFWD
+# define PPPOEIOCSFWD 0x4004b100
+#endif
+#ifdef PPSETTIME
+# undef PPSETTIME
+# define PPSETTIME 0x40087096
+#endif
+#ifdef PPS_FETCH
+# undef PPS_FETCH
+# define PPS_FETCH 0xc00470a4
+#endif
+#ifdef PPS_GETCAP
+# undef PPS_GETCAP
+# define PPS_GETCAP 0x800470a3
+#endif
+#ifdef PPS_GETPARAMS
+# undef PPS_GETPARAMS
+# define PPS_GETPARAMS 0x800470a1
+#endif
+#ifdef PPS_KC_BIND
+# undef PPS_KC_BIND
+# define PPS_KC_BIND 0x400470a5
+#endif
+#ifdef PPS_SETPARAMS
+# undef PPS_SETPARAMS
+# define PPS_SETPARAMS 0x400470a2
+#endif
+#ifdef REISERFS_IOC_UNPACK
+# undef REISERFS_IOC_UNPACK
+# define REISERFS_IOC_UNPACK 0x4004cd01
+#endif
+#ifdef RTC_EPOCH_READ
+# undef RTC_EPOCH_READ
+# define RTC_EPOCH_READ 0x8004700d
+#endif
+#ifdef RTC_EPOCH_SET
+# undef RTC_EPOCH_SET
+# define RTC_EPOCH_SET 0x4004700e
+#endif
+#ifdef RTC_IRQP_READ
+# undef RTC_IRQP_READ
+# define RTC_IRQP_READ 0x8004700b
+#endif
+#ifdef RTC_IRQP_SET
+# undef RTC_IRQP_SET
+# define RTC_IRQP_SET 0x4004700c
+#endif
+#ifdef RTC_PLL_GET
+# undef RTC_PLL_GET
+# define RTC_PLL_GET 0x801c7011
+#endif
+#ifdef RTC_PLL_SET
+# undef RTC_PLL_SET
+# define RTC_PLL_SET 0x401c7012
+#endif
+#ifdef SCIF_FENCE_MARK
+# undef SCIF_FENCE_MARK
+# define SCIF_FENCE_MARK 0xc00c730f
+#endif
+#ifdef SCIF_FENCE_SIGNAL
+# undef SCIF_FENCE_SIGNAL
+# define SCIF_FENCE_SIGNAL 0xc0247311
+#endif
+#ifdef SCIF_GET_NODEIDS
+# undef SCIF_GET_NODEIDS
+# define SCIF_GET_NODEIDS 0xc014730e
+#endif
+#ifdef SCIF_READFROM
+# undef SCIF_READFROM
+# define SCIF_READFROM 0xc024730a
+#endif
+#ifdef SCIF_RECV
+# undef SCIF_RECV
+# define SCIF_RECV 0xc0147307
+#endif
+#ifdef SCIF_SEND
+# undef SCIF_SEND
+# define SCIF_SEND 0xc0147306
+#endif
+#ifdef SCIF_VREADFROM
+# undef SCIF_VREADFROM
+# define SCIF_VREADFROM 0xc024730c
+#endif
+#ifdef SCIF_VWRITETO
+# undef SCIF_VWRITETO
+# define SCIF_VWRITETO 0xc024730d
+#endif
+#ifdef SCIF_WRITETO
+# undef SCIF_WRITETO
+# define SCIF_WRITETO 0xc024730b
+#endif
+#ifdef SNDCTL_DSP_MAPINBUF
+# undef SNDCTL_DSP_MAPINBUF
+# define SNDCTL_DSP_MAPINBUF 0x80085013
+#endif
+#ifdef SNDCTL_DSP_MAPOUTBUF
+# undef SNDCTL_DSP_MAPOUTBUF
+# define SNDCTL_DSP_MAPOUTBUF 0x80085014
+#endif
+#ifdef SNDRV_CTL_IOCTL_ELEM_LIST
+# undef SNDRV_CTL_IOCTL_ELEM_LIST
+# define SNDRV_CTL_IOCTL_ELEM_LIST 0xc0485510
+#endif
+#ifdef SNDRV_CTL_IOCTL_ELEM_READ
+# undef SNDRV_CTL_IOCTL_ELEM_READ
+# define SNDRV_CTL_IOCTL_ELEM_READ 0xc2c45512
+#endif
+#ifdef SNDRV_CTL_IOCTL_ELEM_WRITE
+# undef SNDRV_CTL_IOCTL_ELEM_WRITE
+# define SNDRV_CTL_IOCTL_ELEM_WRITE 0xc2c45513
+#endif
+#ifdef SNDRV_EMU10K1_IOCTL_CODE_PEEK
+# undef SNDRV_EMU10K1_IOCTL_CODE_PEEK
+# define SNDRV_EMU10K1_IOCTL_CODE_PEEK 0xc18c4812
+#endif
+#ifdef SNDRV_EMU10K1_IOCTL_CODE_POKE
+# undef SNDRV_EMU10K1_IOCTL_CODE_POKE
+# define SNDRV_EMU10K1_IOCTL_CODE_POKE 0x418c4811
+#endif
+#ifdef SNDRV_EMU10K1_IOCTL_TRAM_PEEK
+# undef SNDRV_EMU10K1_IOCTL_TRAM_PEEK
+# define SNDRV_EMU10K1_IOCTL_TRAM_PEEK 0xc00c4822
+#endif
+#ifdef SNDRV_EMU10K1_IOCTL_TRAM_POKE
+# undef SNDRV_EMU10K1_IOCTL_TRAM_POKE
+# define SNDRV_EMU10K1_IOCTL_TRAM_POKE 0x400c4821
+#endif
+#ifdef SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE
+# undef SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE
+# define SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE 0x40044842
+#endif
+#ifdef SNDRV_HDSPM_IOCTL_GET_MIXER
+# undef SNDRV_HDSPM_IOCTL_GET_MIXER
+# define SNDRV_HDSPM_IOCTL_GET_MIXER 0x80044844
+#endif
+#ifdef SNDRV_HDSPM_IOCTL_GET_STATUS
+# undef SNDRV_HDSPM_IOCTL_GET_STATUS
+# define SNDRV_HDSPM_IOCTL_GET_STATUS 0x801c4847
+#endif
+#ifdef SNDRV_HWDEP_IOCTL_DSP_LOAD
+# undef SNDRV_HWDEP_IOCTL_DSP_LOAD
+# define SNDRV_HWDEP_IOCTL_DSP_LOAD 0x40504803
+#endif
+#ifdef SNDRV_PCM_IOCTL_CHANNEL_INFO
+# undef SNDRV_PCM_IOCTL_CHANNEL_INFO
+# define SNDRV_PCM_IOCTL_CHANNEL_INFO 0x80104132
+#endif
+#ifdef SNDRV_PCM_IOCTL_DELAY
+# undef SNDRV_PCM_IOCTL_DELAY
+# define SNDRV_PCM_IOCTL_DELAY 0x80044121
+#endif
+#ifdef SNDRV_PCM_IOCTL_FORWARD
+# undef SNDRV_PCM_IOCTL_FORWARD
+# define SNDRV_PCM_IOCTL_FORWARD 0x40044149
+#endif
+#ifdef SNDRV_PCM_IOCTL_HW_PARAMS
+# undef SNDRV_PCM_IOCTL_HW_PARAMS
+# define SNDRV_PCM_IOCTL_HW_PARAMS 0xc25c4111
+#endif
+#ifdef SNDRV_PCM_IOCTL_HW_REFINE
+# undef SNDRV_PCM_IOCTL_HW_REFINE
+# define SNDRV_PCM_IOCTL_HW_REFINE 0xc25c4110
+#endif
+#ifdef SNDRV_PCM_IOCTL_READI_FRAMES
+# undef SNDRV_PCM_IOCTL_READI_FRAMES
+# define SNDRV_PCM_IOCTL_READI_FRAMES 0x800c4151
+#endif
+#ifdef SNDRV_PCM_IOCTL_READN_FRAMES
+# undef SNDRV_PCM_IOCTL_READN_FRAMES
+# define SNDRV_PCM_IOCTL_READN_FRAMES 0x800c4153
+#endif
+#ifdef SNDRV_PCM_IOCTL_REWIND
+# undef SNDRV_PCM_IOCTL_REWIND
+# define SNDRV_PCM_IOCTL_REWIND 0x40044146
+#endif
+#ifdef SNDRV_PCM_IOCTL_STATUS
+# undef SNDRV_PCM_IOCTL_STATUS
+# define SNDRV_PCM_IOCTL_STATUS 0x806c4120
+#endif
+#ifdef SNDRV_PCM_IOCTL_STATUS_EXT
+# undef SNDRV_PCM_IOCTL_STATUS_EXT
+# define SNDRV_PCM_IOCTL_STATUS_EXT 0xc06c4124
+#endif
+#ifdef SNDRV_PCM_IOCTL_SW_PARAMS
+# undef SNDRV_PCM_IOCTL_SW_PARAMS
+# define SNDRV_PCM_IOCTL_SW_PARAMS 0xc0684113
+#endif
+#ifdef SNDRV_PCM_IOCTL_SYNC_PTR
+# undef SNDRV_PCM_IOCTL_SYNC_PTR
+# define SNDRV_PCM_IOCTL_SYNC_PTR 0xc0844123
+#endif
+#ifdef SNDRV_PCM_IOCTL_WRITEI_FRAMES
+# undef SNDRV_PCM_IOCTL_WRITEI_FRAMES
+# define SNDRV_PCM_IOCTL_WRITEI_FRAMES 0x400c4150
+#endif
+#ifdef SNDRV_PCM_IOCTL_WRITEN_FRAMES
+# undef SNDRV_PCM_IOCTL_WRITEN_FRAMES
+# define SNDRV_PCM_IOCTL_WRITEN_FRAMES 0x400c4152
+#endif
+#ifdef SNDRV_RAWMIDI_IOCTL_PARAMS
+# undef SNDRV_RAWMIDI_IOCTL_PARAMS
+# define SNDRV_RAWMIDI_IOCTL_PARAMS 0xc0205710
+#endif
+#ifdef SNDRV_RAWMIDI_IOCTL_STATUS
+# undef SNDRV_RAWMIDI_IOCTL_STATUS
+# define SNDRV_RAWMIDI_IOCTL_STATUS 0xc0245720
+#endif
+#ifdef SNDRV_SEQ_IOCTL_CREATE_PORT
+# undef SNDRV_SEQ_IOCTL_CREATE_PORT
+# define SNDRV_SEQ_IOCTL_CREATE_PORT 0xc0a45320
+#endif
+#ifdef SNDRV_SEQ_IOCTL_DELETE_PORT
+# undef SNDRV_SEQ_IOCTL_DELETE_PORT
+# define SNDRV_SEQ_IOCTL_DELETE_PORT 0x40a45321
+#endif
+#ifdef SNDRV_SEQ_IOCTL_GET_PORT_INFO
+# undef SNDRV_SEQ_IOCTL_GET_PORT_INFO
+# define SNDRV_SEQ_IOCTL_GET_PORT_INFO 0xc0a45322
+#endif
+#ifdef SNDRV_SEQ_IOCTL_QUERY_NEXT_PORT
+# undef SNDRV_SEQ_IOCTL_QUERY_NEXT_PORT
+# define SNDRV_SEQ_IOCTL_QUERY_NEXT_PORT 0xc0a45352
+#endif
+#ifdef SNDRV_SEQ_IOCTL_SET_PORT_INFO
+# undef SNDRV_SEQ_IOCTL_SET_PORT_INFO
+# define SNDRV_SEQ_IOCTL_SET_PORT_INFO 0x40a45323
+#endif
+#ifdef SNDRV_TIMER_IOCTL_GINFO
+# undef SNDRV_TIMER_IOCTL_GINFO
+# define SNDRV_TIMER_IOCTL_GINFO 0xc0e05403
+#endif
+#ifdef SNDRV_TIMER_IOCTL_GPARAMS
+# undef SNDRV_TIMER_IOCTL_GPARAMS
+# define SNDRV_TIMER_IOCTL_GPARAMS 0x403c5404
+#endif
+#ifdef SNDRV_TIMER_IOCTL_GSTATUS
+# undef SNDRV_TIMER_IOCTL_GSTATUS
+# define SNDRV_TIMER_IOCTL_GSTATUS 0xc0405405
+#endif
+#ifdef SNDRV_TIMER_IOCTL_INFO
+# undef SNDRV_TIMER_IOCTL_INFO
+# define SNDRV_TIMER_IOCTL_INFO 0x80e05411
+#endif
+#ifdef SNDRV_TIMER_IOCTL_STATUS
+# undef SNDRV_TIMER_IOCTL_STATUS
+# define SNDRV_TIMER_IOCTL_STATUS 0x80585414
+#endif
+#ifdef SPIOCSTYPE
+# undef SPIOCSTYPE
+# define SPIOCSTYPE 0x40047101
+#endif
+#ifdef TUNATTACHFILTER
+# undef TUNATTACHFILTER
+# define TUNATTACHFILTER 0x400854d5
+#endif
+#ifdef TUNDETACHFILTER
+# undef TUNDETACHFILTER
+# define TUNDETACHFILTER 0x400854d6
+#endif
+#ifdef TUNER_SET_CONFIG
+# undef TUNER_SET_CONFIG
+# define TUNER_SET_CONFIG 0x4008645c
+#endif
+#ifdef TUNGETFILTER
+# undef TUNGETFILTER
+# define TUNGETFILTER 0x800854db
+#endif
+#ifdef UDF_GETEABLOCK
+# undef UDF_GETEABLOCK
+# define UDF_GETEABLOCK 0x80046c41
+#endif
+#ifdef UDF_GETVOLIDENT
+# undef UDF_GETVOLIDENT
+# define UDF_GETVOLIDENT 0x80046c42
+#endif
+#ifdef UDF_RELOCATE_BLOCKS
+# undef UDF_RELOCATE_BLOCKS
+# define UDF_RELOCATE_BLOCKS 0xc0046c43
+#endif
+#ifdef UI_BEGIN_FF_UPLOAD
+# undef UI_BEGIN_FF_UPLOAD
+# define UI_BEGIN_FF_UPLOAD 0xc06055c8
+#endif
+#ifdef UI_END_FF_UPLOAD
+# undef UI_END_FF_UPLOAD
+# define UI_END_FF_UPLOAD 0x406055c9
+#endif
+#ifdef UI_SET_PHYS
+# undef UI_SET_PHYS
+# define UI_SET_PHYS 0x4004556c
+#endif
+#ifdef USBDEVFS_BULK
+# undef USBDEVFS_BULK
+# define USBDEVFS_BULK 0xc0105502
+#endif
+#ifdef USBDEVFS_CONTROL
+# undef USBDEVFS_CONTROL
+# define USBDEVFS_CONTROL 0xc0105500
+#endif
+#ifdef USBDEVFS_DISCSIGNAL
+# undef USBDEVFS_DISCSIGNAL
+# define USBDEVFS_DISCSIGNAL 0x8008550e
+#endif
+#ifdef USBDEVFS_IOCTL
+# undef USBDEVFS_IOCTL
+# define USBDEVFS_IOCTL 0xc00c5512
+#endif
+#ifdef USBDEVFS_REAPURB
+# undef USBDEVFS_REAPURB
+# define USBDEVFS_REAPURB 0x4004550c
+#endif
+#ifdef USBDEVFS_REAPURBNDELAY
+# undef USBDEVFS_REAPURBNDELAY
+# define USBDEVFS_REAPURBNDELAY 0x4004550d
+#endif
+#ifdef USBDEVFS_SUBMITURB
+# undef USBDEVFS_SUBMITURB
+# define USBDEVFS_SUBMITURB 0x802c550a
+#endif
+#ifdef UVCIOC_CTRL_MAP
+# undef UVCIOC_CTRL_MAP
+# define UVCIOC_CTRL_MAP 0xc0587520
+#endif
+#ifdef UVCIOC_CTRL_QUERY
+# undef UVCIOC_CTRL_QUERY
+# define UVCIOC_CTRL_QUERY 0xc00c7521
+#endif
+#ifdef V4L2_DEVICE_NOTIFY_EVENT
+# undef V4L2_DEVICE_NOTIFY_EVENT
+# define V4L2_DEVICE_NOTIFY_EVENT 0x40787602
+#endif
+#ifdef VFAT_IOCTL_READDIR_BOTH
+# undef VFAT_IOCTL_READDIR_BOTH
+# define VFAT_IOCTL_READDIR_BOTH 0x82187201
+#endif
+#ifdef VFAT_IOCTL_READDIR_SHORT
+# undef VFAT_IOCTL_READDIR_SHORT
+# define VFAT_IOCTL_READDIR_SHORT 0x82187202
+#endif
+#ifdef VIDEO_GET_EVENT
+# undef VIDEO_GET_EVENT
+# define VIDEO_GET_EVENT 0x80146f1c
+#endif
+#ifdef VIDEO_SET_SPU_PALETTE
+# undef VIDEO_SET_SPU_PALETTE
+# define VIDEO_SET_SPU_PALETTE 0x40086f33
+#endif
+#ifdef VIDEO_STILLPICTURE
+# undef VIDEO_STILLPICTURE
+# define VIDEO_STILLPICTURE 0x40086f1e
+#endif
+#ifdef VIDIOC_AM437X_CCDC_CFG
+# undef VIDIOC_AM437X_CCDC_CFG
+# define VIDIOC_AM437X_CCDC_CFG 0x400456c1
+#endif
+#ifdef VIDIOC_CREATE_BUFS
+# undef VIDIOC_CREATE_BUFS
+# define VIDIOC_CREATE_BUFS 0xc0f8565c
+#endif
+#ifdef VIDIOC_DQBUF
+# undef VIDIOC_DQBUF
+# define VIDIOC_DQBUF 0xc0445611
+#endif
+#ifdef VIDIOC_DQEVENT
+# undef VIDIOC_DQEVENT
+# define VIDIOC_DQEVENT 0x80785659
+#endif
+#ifdef VIDIOC_ENUMINPUT
+# undef VIDIOC_ENUMINPUT
+# define VIDIOC_ENUMINPUT 0xc04c561a
+#endif
+#ifdef VIDIOC_ENUMSTD
+# undef VIDIOC_ENUMSTD
+# define VIDIOC_ENUMSTD 0xc0405619
+#endif
+#ifdef VIDIOC_G_EDID
+# undef VIDIOC_G_EDID
+# define VIDIOC_G_EDID 0xc0245628
+#endif
+#ifdef VIDIOC_G_EXT_CTRLS
+# undef VIDIOC_G_EXT_CTRLS
+# define VIDIOC_G_EXT_CTRLS 0xc0185647
+#endif
+#ifdef VIDIOC_G_FBUF
+# undef VIDIOC_G_FBUF
+# define VIDIOC_G_FBUF 0x802c560a
+#endif
+#ifdef VIDIOC_G_FMT
+# undef VIDIOC_G_FMT
+# define VIDIOC_G_FMT 0xc0cc5604
+#endif
+#ifdef VIDIOC_OMAP3ISP_CCDC_CFG
+# undef VIDIOC_OMAP3ISP_CCDC_CFG
+# define VIDIOC_OMAP3ISP_CCDC_CFG 0xc02056c1
+#endif
+#ifdef VIDIOC_OMAP3ISP_PRV_CFG
+# undef VIDIOC_OMAP3ISP_PRV_CFG
+# define VIDIOC_OMAP3ISP_PRV_CFG 0xc03c56c2
+#endif
+#ifdef VIDIOC_OMAP3ISP_STAT_EN
+# undef VIDIOC_OMAP3ISP_STAT_EN
+# define VIDIOC_OMAP3ISP_STAT_EN 0xc00456c7
+#endif
+#ifdef VIDIOC_OMAP3ISP_STAT_REQ
+# undef VIDIOC_OMAP3ISP_STAT_REQ
+# define VIDIOC_OMAP3ISP_STAT_REQ 0xc01856c6
+#endif
+#ifdef VIDIOC_PREPARE_BUF
+# undef VIDIOC_PREPARE_BUF
+# define VIDIOC_PREPARE_BUF 0xc044565d
+#endif
+#ifdef VIDIOC_QBUF
+# undef VIDIOC_QBUF
+# define VIDIOC_QBUF 0xc044560f
+#endif
+#ifdef VIDIOC_QUERYBUF
+# undef VIDIOC_QUERYBUF
+# define VIDIOC_QUERYBUF 0xc0445609
+#endif
+#ifdef VIDIOC_S_EDID
+# undef VIDIOC_S_EDID
+# define VIDIOC_S_EDID 0xc0245629
+#endif
+#ifdef VIDIOC_S_EXT_CTRLS
+# undef VIDIOC_S_EXT_CTRLS
+# define VIDIOC_S_EXT_CTRLS 0xc0185648
+#endif
+#ifdef VIDIOC_S_FBUF
+# undef VIDIOC_S_FBUF
+# define VIDIOC_S_FBUF 0x402c560b
+#endif
+#ifdef VIDIOC_S_FMT
+# undef VIDIOC_S_FMT
+# define VIDIOC_S_FMT 0xc0cc5605
+#endif
+#ifdef VIDIOC_SUBDEV_G_EDID
+# undef VIDIOC_SUBDEV_G_EDID
+# define VIDIOC_SUBDEV_G_EDID 0xc0245628
+#endif
+#ifdef VIDIOC_SUBDEV_S_EDID
+# undef VIDIOC_SUBDEV_S_EDID
+# define VIDIOC_SUBDEV_S_EDID 0xc0245629
+#endif
+#ifdef VIDIOC_TRY_EXT_CTRLS
+# undef VIDIOC_TRY_EXT_CTRLS
+# define VIDIOC_TRY_EXT_CTRLS 0xc0185649
+#endif
+#ifdef VIDIOC_TRY_FMT
+# undef VIDIOC_TRY_FMT
+# define VIDIOC_TRY_FMT 0xc0cc5640
+#endif
+#ifdef VPFE_CMD_S_CCDC_RAW_PARAMS
+# undef VPFE_CMD_S_CCDC_RAW_PARAMS
+# define VPFE_CMD_S_CCDC_RAW_PARAMS 0x400456c1
+#endif
+#ifdef ZATM_GETPOOL
+# undef ZATM_GETPOOL
+# define ZATM_GETPOOL 0x400c6161
+#endif
+#ifdef ZATM_GETPOOLZ
+# undef ZATM_GETPOOLZ
+# define ZATM_GETPOOLZ 0x400c6162
+#endif
+#ifdef ZATM_SETPOOL
+# undef ZATM_SETPOOL
+# define ZATM_SETPOOL 0x400c6163
+#endif
diff --git a/ioctl_redefs2.h b/ioctl_redefs2.h
new file mode 100644
index 0000000..8e5503e
--- /dev/null
+++ b/ioctl_redefs2.h
@@ -0,0 +1,1308 @@
+#ifdef AGPIOC_ALLOCATE
+# undef AGPIOC_ALLOCATE
+# define AGPIOC_ALLOCATE 0xc0044106
+#endif
+#ifdef AGPIOC_BIND
+# undef AGPIOC_BIND
+# define AGPIOC_BIND 0x40044108
+#endif
+#ifdef AGPIOC_INFO
+# undef AGPIOC_INFO
+# define AGPIOC_INFO 0x80044100
+#endif
+#ifdef AGPIOC_PROTECT
+# undef AGPIOC_PROTECT
+# define AGPIOC_PROTECT 0x40044105
+#endif
+#ifdef AGPIOC_RESERVE
+# undef AGPIOC_RESERVE
+# define AGPIOC_RESERVE 0x40044104
+#endif
+#ifdef AGPIOC_SETUP
+# undef AGPIOC_SETUP
+# define AGPIOC_SETUP 0x40044103
+#endif
+#ifdef AGPIOC_UNBIND
+# undef AGPIOC_UNBIND
+# define AGPIOC_UNBIND 0x40044109
+#endif
+#ifdef ASHMEM_SET_PROT_MASK
+# undef ASHMEM_SET_PROT_MASK
+# define ASHMEM_SET_PROT_MASK 0x40047705
+#endif
+#ifdef ASHMEM_SET_SIZE
+# undef ASHMEM_SET_SIZE
+# define ASHMEM_SET_SIZE 0x40047703
+#endif
+#ifdef ATM_ADDADDR
+# undef ATM_ADDADDR
+# define ATM_ADDADDR 0x400c6188
+#endif
+#ifdef ATM_ADDLECSADDR
+# undef ATM_ADDLECSADDR
+# define ATM_ADDLECSADDR 0x400c618e
+#endif
+#ifdef ATM_ADDPARTY
+# undef ATM_ADDPARTY
+# define ATM_ADDPARTY 0x400861f4
+#endif
+#ifdef ATM_DELADDR
+# undef ATM_DELADDR
+# define ATM_DELADDR 0x400c6189
+#endif
+#ifdef ATM_DELLECSADDR
+# undef ATM_DELLECSADDR
+# define ATM_DELLECSADDR 0x400c618f
+#endif
+#ifdef ATM_GETADDR
+# undef ATM_GETADDR
+# define ATM_GETADDR 0x400c6186
+#endif
+#ifdef ATM_GETCIRANGE
+# undef ATM_GETCIRANGE
+# define ATM_GETCIRANGE 0x400c618a
+#endif
+#ifdef ATM_GETESI
+# undef ATM_GETESI
+# define ATM_GETESI 0x400c6185
+#endif
+#ifdef ATM_GETLECSADDR
+# undef ATM_GETLECSADDR
+# define ATM_GETLECSADDR 0x400c6190
+#endif
+#ifdef ATM_GETLINKRATE
+# undef ATM_GETLINKRATE
+# define ATM_GETLINKRATE 0x400c6181
+#endif
+#ifdef ATM_GETLOOP
+# undef ATM_GETLOOP
+# define ATM_GETLOOP 0x400c6152
+#endif
+#ifdef ATM_GETNAMES
+# undef ATM_GETNAMES
+# define ATM_GETNAMES 0x40086183
+#endif
+#ifdef ATM_GETSTAT
+# undef ATM_GETSTAT
+# define ATM_GETSTAT 0x400c6150
+#endif
+#ifdef ATM_GETSTATZ
+# undef ATM_GETSTATZ
+# define ATM_GETSTATZ 0x400c6151
+#endif
+#ifdef ATM_GETTYPE
+# undef ATM_GETTYPE
+# define ATM_GETTYPE 0x400c6184
+#endif
+#ifdef ATM_QUERYLOOP
+# undef ATM_QUERYLOOP
+# define ATM_QUERYLOOP 0x400c6154
+#endif
+#ifdef ATM_RSTADDR
+# undef ATM_RSTADDR
+# define ATM_RSTADDR 0x400c6187
+#endif
+#ifdef ATM_SETCIRANGE
+# undef ATM_SETCIRANGE
+# define ATM_SETCIRANGE 0x400c618b
+#endif
+#ifdef ATM_SETESI
+# undef ATM_SETESI
+# define ATM_SETESI 0x400c618c
+#endif
+#ifdef ATM_SETESIF
+# undef ATM_SETESIF
+# define ATM_SETESIF 0x400c618d
+#endif
+#ifdef ATM_SETLOOP
+# undef ATM_SETLOOP
+# define ATM_SETLOOP 0x400c6153
+#endif
+#ifdef AUTOFS_IOC_SETTIMEOUT
+# undef AUTOFS_IOC_SETTIMEOUT
+# define AUTOFS_IOC_SETTIMEOUT 0xc0049364
+#endif
+#ifdef BLKBSZGET
+# undef BLKBSZGET
+# define BLKBSZGET 0x80041270
+#endif
+#ifdef BLKBSZSET
+# undef BLKBSZSET
+# define BLKBSZSET 0x40041271
+#endif
+#ifdef BLKGETSIZE64
+# undef BLKGETSIZE64
+# define BLKGETSIZE64 0x80041272
+#endif
+#ifdef CAPI_MANUFACTURER_CMD
+# undef CAPI_MANUFACTURER_CMD
+# define CAPI_MANUFACTURER_CMD 0xc0084320
+#endif
+#ifdef CCISS_BIG_PASSTHRU
+# undef CCISS_BIG_PASSTHRU
+# define CCISS_BIG_PASSTHRU 0xc0584212
+#endif
+#ifdef CCISS_PASSTHRU
+# undef CCISS_PASSTHRU
+# define CCISS_PASSTHRU 0xc054420b
+#endif
+#ifdef CHIOGSTATUS
+# undef CHIOGSTATUS
+# define CHIOGSTATUS 0x40086308
+#endif
+#ifdef CIOC_KERNEL_VERSION
+# undef CIOC_KERNEL_VERSION
+# define CIOC_KERNEL_VERSION 0xc004630a
+#endif
+#ifdef CM_IOCGATR
+# undef CM_IOCGATR
+# define CM_IOCGATR 0xc0046301
+#endif
+#ifdef CM_IOCGSTATUS
+# undef CM_IOCGSTATUS
+# define CM_IOCGSTATUS 0x80046300
+#endif
+#ifdef CM_IOCSPTS
+# undef CM_IOCSPTS
+# define CM_IOCSPTS 0x40046302
+#endif
+#ifdef CM_IOSDBGLVL
+# undef CM_IOSDBGLVL
+# define CM_IOSDBGLVL 0x400463fa
+#endif
+#ifdef DRM_IOCTL_ADD_BUFS
+# undef DRM_IOCTL_ADD_BUFS
+# define DRM_IOCTL_ADD_BUFS 0xc0186416
+#endif
+#ifdef DRM_IOCTL_ADD_MAP
+# undef DRM_IOCTL_ADD_MAP
+# define DRM_IOCTL_ADD_MAP 0xc0186415
+#endif
+#ifdef DRM_IOCTL_AGP_ALLOC
+# undef DRM_IOCTL_AGP_ALLOC
+# define DRM_IOCTL_AGP_ALLOC 0xc0106434
+#endif
+#ifdef DRM_IOCTL_AGP_BIND
+# undef DRM_IOCTL_AGP_BIND
+# define DRM_IOCTL_AGP_BIND 0x40086436
+#endif
+#ifdef DRM_IOCTL_AGP_ENABLE
+# undef DRM_IOCTL_AGP_ENABLE
+# define DRM_IOCTL_AGP_ENABLE 0x40046432
+#endif
+#ifdef DRM_IOCTL_AGP_FREE
+# undef DRM_IOCTL_AGP_FREE
+# define DRM_IOCTL_AGP_FREE 0x40106435
+#endif
+#ifdef DRM_IOCTL_AGP_INFO
+# undef DRM_IOCTL_AGP_INFO
+# define DRM_IOCTL_AGP_INFO 0x80206433
+#endif
+#ifdef DRM_IOCTL_AGP_UNBIND
+# undef DRM_IOCTL_AGP_UNBIND
+# define DRM_IOCTL_AGP_UNBIND 0x40086437
+#endif
+#ifdef DRM_IOCTL_DMA
+# undef DRM_IOCTL_DMA
+# define DRM_IOCTL_DMA 0xc0286429
+#endif
+#ifdef DRM_IOCTL_FREE_BUFS
+# undef DRM_IOCTL_FREE_BUFS
+# define DRM_IOCTL_FREE_BUFS 0x4008641a
+#endif
+#ifdef DRM_IOCTL_GET_CLIENT
+# undef DRM_IOCTL_GET_CLIENT
+# define DRM_IOCTL_GET_CLIENT 0xc0186405
+#endif
+#ifdef DRM_IOCTL_GET_MAP
+# undef DRM_IOCTL_GET_MAP
+# define DRM_IOCTL_GET_MAP 0xc0186404
+#endif
+#ifdef DRM_IOCTL_GET_SAREA_CTX
+# undef DRM_IOCTL_GET_SAREA_CTX
+# define DRM_IOCTL_GET_SAREA_CTX 0xc008641d
+#endif
+#ifdef DRM_IOCTL_GET_STATS
+# undef DRM_IOCTL_GET_STATS
+# define DRM_IOCTL_GET_STATS 0x807c6406
+#endif
+#ifdef DRM_IOCTL_GET_UNIQUE
+# undef DRM_IOCTL_GET_UNIQUE
+# define DRM_IOCTL_GET_UNIQUE 0xc0086401
+#endif
+#ifdef DRM_IOCTL_I810_COPY
+# undef DRM_IOCTL_I810_COPY
+# define DRM_IOCTL_I810_COPY 0x400c6447
+#endif
+#ifdef DRM_IOCTL_I810_GETBUF
+# undef DRM_IOCTL_I810_GETBUF
+# define DRM_IOCTL_I810_GETBUF 0xc0106445
+#endif
+#ifdef DRM_IOCTL_I810_MC
+# undef DRM_IOCTL_I810_MC
+# define DRM_IOCTL_I810_MC 0x4014644c
+#endif
+#ifdef DRM_IOCTL_I915_ALLOC
+# undef DRM_IOCTL_I915_ALLOC
+# define DRM_IOCTL_I915_ALLOC 0xc0106448
+#endif
+#ifdef DRM_IOCTL_I915_BATCHBUFFER
+# undef DRM_IOCTL_I915_BATCHBUFFER
+# define DRM_IOCTL_I915_BATCHBUFFER 0x40186443
+#endif
+#ifdef DRM_IOCTL_I915_CMDBUFFER
+# undef DRM_IOCTL_I915_CMDBUFFER
+# define DRM_IOCTL_I915_CMDBUFFER 0x4018644b
+#endif
+#ifdef DRM_IOCTL_I915_GETPARAM
+# undef DRM_IOCTL_I915_GETPARAM
+# define DRM_IOCTL_I915_GETPARAM 0xc0086446
+#endif
+#ifdef DRM_IOCTL_I915_IRQ_EMIT
+# undef DRM_IOCTL_I915_IRQ_EMIT
+# define DRM_IOCTL_I915_IRQ_EMIT 0xc0046444
+#endif
+#ifdef DRM_IOCTL_INFO_BUFS
+# undef DRM_IOCTL_INFO_BUFS
+# define DRM_IOCTL_INFO_BUFS 0xc0086418
+#endif
+#ifdef DRM_IOCTL_MAP_BUFS
+# undef DRM_IOCTL_MAP_BUFS
+# define DRM_IOCTL_MAP_BUFS 0xc00c6419
+#endif
+#ifdef DRM_IOCTL_MARK_BUFS
+# undef DRM_IOCTL_MARK_BUFS
+# define DRM_IOCTL_MARK_BUFS 0x40186417
+#endif
+#ifdef DRM_IOCTL_MGA_DMA_BOOTSTRAP
+# undef DRM_IOCTL_MGA_DMA_BOOTSTRAP
+# define DRM_IOCTL_MGA_DMA_BOOTSTRAP 0xc01c644c
+#endif
+#ifdef DRM_IOCTL_MGA_GETPARAM
+# undef DRM_IOCTL_MGA_GETPARAM
+# define DRM_IOCTL_MGA_GETPARAM 0xc0086449
+#endif
+#ifdef DRM_IOCTL_MGA_INIT
+# undef DRM_IOCTL_MGA_INIT
+# define DRM_IOCTL_MGA_INIT 0x405c6440
+#endif
+#ifdef DRM_IOCTL_R128_DEPTH
+# undef DRM_IOCTL_R128_DEPTH
+# define DRM_IOCTL_R128_DEPTH 0x4018644c
+#endif
+#ifdef DRM_IOCTL_R128_GETPARAM
+# undef DRM_IOCTL_R128_GETPARAM
+# define DRM_IOCTL_R128_GETPARAM 0xc0086452
+#endif
+#ifdef DRM_IOCTL_R128_INIT
+# undef DRM_IOCTL_R128_INIT
+# define DRM_IOCTL_R128_INIT 0x40586440
+#endif
+#ifdef DRM_IOCTL_R128_STIPPLE
+# undef DRM_IOCTL_R128_STIPPLE
+# define DRM_IOCTL_R128_STIPPLE 0x4004644d
+#endif
+#ifdef DRM_IOCTL_RADEON_ALLOC
+# undef DRM_IOCTL_RADEON_ALLOC
+# define DRM_IOCTL_RADEON_ALLOC 0xc0106453
+#endif
+#ifdef DRM_IOCTL_RADEON_CLEAR
+# undef DRM_IOCTL_RADEON_CLEAR
+# define DRM_IOCTL_RADEON_CLEAR 0x40186448
+#endif
+#ifdef DRM_IOCTL_RADEON_CMDBUF
+# undef DRM_IOCTL_RADEON_CMDBUF
+# define DRM_IOCTL_RADEON_CMDBUF 0x40106450
+#endif
+#ifdef DRM_IOCTL_RADEON_CP_INIT
+# undef DRM_IOCTL_RADEON_CP_INIT
+# define DRM_IOCTL_RADEON_CP_INIT 0x40546440
+#endif
+#ifdef DRM_IOCTL_RADEON_GETPARAM
+# undef DRM_IOCTL_RADEON_GETPARAM
+# define DRM_IOCTL_RADEON_GETPARAM 0xc0086451
+#endif
+#ifdef DRM_IOCTL_RADEON_IRQ_EMIT
+# undef DRM_IOCTL_RADEON_IRQ_EMIT
+# define DRM_IOCTL_RADEON_IRQ_EMIT 0xc0046456
+#endif
+#ifdef DRM_IOCTL_RADEON_STIPPLE
+# undef DRM_IOCTL_RADEON_STIPPLE
+# define DRM_IOCTL_RADEON_STIPPLE 0x4004644c
+#endif
+#ifdef DRM_IOCTL_RADEON_TEXTURE
+# undef DRM_IOCTL_RADEON_TEXTURE
+# define DRM_IOCTL_RADEON_TEXTURE 0xc018644e
+#endif
+#ifdef DRM_IOCTL_RADEON_VERTEX2
+# undef DRM_IOCTL_RADEON_VERTEX2
+# define DRM_IOCTL_RADEON_VERTEX2 0x4018644f
+#endif
+#ifdef DRM_IOCTL_RES_CTX
+# undef DRM_IOCTL_RES_CTX
+# define DRM_IOCTL_RES_CTX 0xc0086426
+#endif
+#ifdef DRM_IOCTL_RM_MAP
+# undef DRM_IOCTL_RM_MAP
+# define DRM_IOCTL_RM_MAP 0x4018641b
+#endif
+#ifdef DRM_IOCTL_SAVAGE_BCI_CMDBUF
+# undef DRM_IOCTL_SAVAGE_BCI_CMDBUF
+# define DRM_IOCTL_SAVAGE_BCI_CMDBUF 0x40246441
+#endif
+#ifdef DRM_IOCTL_SAVAGE_BCI_INIT
+# undef DRM_IOCTL_SAVAGE_BCI_INIT
+# define DRM_IOCTL_SAVAGE_BCI_INIT 0x40506440
+#endif
+#ifdef DRM_IOCTL_SET_SAREA_CTX
+# undef DRM_IOCTL_SET_SAREA_CTX
+# define DRM_IOCTL_SET_SAREA_CTX 0x4008641c
+#endif
+#ifdef DRM_IOCTL_SET_UNIQUE
+# undef DRM_IOCTL_SET_UNIQUE
+# define DRM_IOCTL_SET_UNIQUE 0x40086410
+#endif
+#ifdef DRM_IOCTL_SG_ALLOC
+# undef DRM_IOCTL_SG_ALLOC
+# define DRM_IOCTL_SG_ALLOC 0xc0086438
+#endif
+#ifdef DRM_IOCTL_SG_FREE
+# undef DRM_IOCTL_SG_FREE
+# define DRM_IOCTL_SG_FREE 0x40086439
+#endif
+#ifdef DRM_IOCTL_SIS_AGP_ALLOC
+# undef DRM_IOCTL_SIS_AGP_ALLOC
+# define DRM_IOCTL_SIS_AGP_ALLOC 0xc0106454
+#endif
+#ifdef DRM_IOCTL_SIS_AGP_FREE
+# undef DRM_IOCTL_SIS_AGP_FREE
+# define DRM_IOCTL_SIS_AGP_FREE 0x40106455
+#endif
+#ifdef DRM_IOCTL_SIS_AGP_INIT
+# undef DRM_IOCTL_SIS_AGP_INIT
+# define DRM_IOCTL_SIS_AGP_INIT 0xc0086453
+#endif
+#ifdef DRM_IOCTL_SIS_FB_ALLOC
+# undef DRM_IOCTL_SIS_FB_ALLOC
+# define DRM_IOCTL_SIS_FB_ALLOC 0xc0106444
+#endif
+#ifdef DRM_IOCTL_SIS_FB_FREE
+# undef DRM_IOCTL_SIS_FB_FREE
+# define DRM_IOCTL_SIS_FB_FREE 0x40106445
+#endif
+#ifdef DRM_IOCTL_SIS_FB_INIT
+# undef DRM_IOCTL_SIS_FB_INIT
+# define DRM_IOCTL_SIS_FB_INIT 0x40086456
+#endif
+#ifdef DRM_IOCTL_VERSION
+# undef DRM_IOCTL_VERSION
+# define DRM_IOCTL_VERSION 0xc0246400
+#endif
+#ifdef DRM_IOCTL_VIA_ALLOCMEM
+# undef DRM_IOCTL_VIA_ALLOCMEM
+# define DRM_IOCTL_VIA_ALLOCMEM 0xc0146440
+#endif
+#ifdef DRM_IOCTL_VIA_CMDBUFFER
+# undef DRM_IOCTL_VIA_CMDBUFFER
+# define DRM_IOCTL_VIA_CMDBUFFER 0x40086448
+#endif
+#ifdef DRM_IOCTL_VIA_DMA_BLIT
+# undef DRM_IOCTL_VIA_DMA_BLIT
+# define DRM_IOCTL_VIA_DMA_BLIT 0x4028644e
+#endif
+#ifdef DRM_IOCTL_VIA_DMA_INIT
+# undef DRM_IOCTL_VIA_DMA_INIT
+# define DRM_IOCTL_VIA_DMA_INIT 0xc0106447
+#endif
+#ifdef DRM_IOCTL_VIA_FREEMEM
+# undef DRM_IOCTL_VIA_FREEMEM
+# define DRM_IOCTL_VIA_FREEMEM 0x40146441
+#endif
+#ifdef DRM_IOCTL_VIA_MAP_INIT
+# undef DRM_IOCTL_VIA_MAP_INIT
+# define DRM_IOCTL_VIA_MAP_INIT 0xc0146444
+#endif
+#ifdef DRM_IOCTL_VIA_PCICMD
+# undef DRM_IOCTL_VIA_PCICMD
+# define DRM_IOCTL_VIA_PCICMD 0x4008644a
+#endif
+#ifdef DRM_IOCTL_VIA_WAIT_IRQ
+# undef DRM_IOCTL_VIA_WAIT_IRQ
+# define DRM_IOCTL_VIA_WAIT_IRQ 0xc010644d
+#endif
+#ifdef DRM_IOCTL_WAIT_VBLANK
+# undef DRM_IOCTL_WAIT_VBLANK
+# define DRM_IOCTL_WAIT_VBLANK 0xc010643a
+#endif
+#ifdef ENI_MEMDUMP
+# undef ENI_MEMDUMP
+# define ENI_MEMDUMP 0x400c6160
+#endif
+#ifdef ENI_SETMULT
+# undef ENI_SETMULT
+# define ENI_SETMULT 0x400c6167
+#endif
+#ifdef EVIOCSFF
+# undef EVIOCSFF
+# define EVIOCSFF 0x402c4580
+#endif
+#ifdef FBIO_CURSOR
+# undef FBIO_CURSOR
+# define FBIO_CURSOR 0xc0484608
+#endif
+#ifdef FBIO_GETCONTROL2
+# undef FBIO_GETCONTROL2
+# define FBIO_GETCONTROL2 0x80044689
+#endif
+#ifdef FBIO_RADEON_GET_MIRROR
+# undef FBIO_RADEON_GET_MIRROR
+# define FBIO_RADEON_GET_MIRROR 0x80044003
+#endif
+#ifdef FBIO_RADEON_SET_MIRROR
+# undef FBIO_RADEON_SET_MIRROR
+# define FBIO_RADEON_SET_MIRROR 0x40044004
+#endif
+#ifdef FDDEFPRM
+# undef FDDEFPRM
+# define FDDEFPRM 0x401c0243
+#endif
+#ifdef FDGETDRVPRM
+# undef FDGETDRVPRM
+# define FDGETDRVPRM 0x80580211
+#endif
+#ifdef FDGETDRVSTAT
+# undef FDGETDRVSTAT
+# define FDGETDRVSTAT 0x80340212
+#endif
+#ifdef FDGETFDCSTAT
+# undef FDGETFDCSTAT
+# define FDGETFDCSTAT 0x80200215
+#endif
+#ifdef FDGETPRM
+# undef FDGETPRM
+# define FDGETPRM 0x801c0204
+#endif
+#ifdef FDPOLLDRVSTAT
+# undef FDPOLLDRVSTAT
+# define FDPOLLDRVSTAT 0x80340213
+#endif
+#ifdef FDSETDRVPRM
+# undef FDSETDRVPRM
+# define FDSETDRVPRM 0x40580290
+#endif
+#ifdef FDSETPRM
+# undef FDSETPRM
+# define FDSETPRM 0x401c0242
+#endif
+#ifdef FDWERRORGET
+# undef FDWERRORGET
+# define FDWERRORGET 0x80180217
+#endif
+#ifdef FE_GET_PROPERTY
+# undef FE_GET_PROPERTY
+# define FE_GET_PROPERTY 0x80086f53
+#endif
+#ifdef FE_SET_PROPERTY
+# undef FE_SET_PROPERTY
+# define FE_SET_PROPERTY 0x40086f52
+#endif
+#ifdef FS_IOC_GETFLAGS
+# undef FS_IOC_GETFLAGS
+# define FS_IOC_GETFLAGS 0x80046601
+#endif
+#ifdef FS_IOC_GETVERSION
+# undef FS_IOC_GETVERSION
+# define FS_IOC_GETVERSION 0x80047601
+#endif
+#ifdef FS_IOC_SETFLAGS
+# undef FS_IOC_SETFLAGS
+# define FS_IOC_SETFLAGS 0x40046602
+#endif
+#ifdef FS_IOC_SETVERSION
+# undef FS_IOC_SETVERSION
+# define FS_IOC_SETVERSION 0x40047602
+#endif
+#ifdef HE_GET_REG
+# undef HE_GET_REG
+# define HE_GET_REG 0x400c6160
+#endif
+#ifdef HPET_INFO
+# undef HPET_INFO
+# define HPET_INFO 0x800c6803
+#endif
+#ifdef HPET_IRQFREQ
+# undef HPET_IRQFREQ
+# define HPET_IRQFREQ 0x40046806
+#endif
+#ifdef I2OHRTGET
+# undef I2OHRTGET
+# define I2OHRTGET 0xc00c6901
+#endif
+#ifdef I2OHTML
+# undef I2OHTML
+# define I2OHTML 0xc01c6909
+#endif
+#ifdef I2OLCTGET
+# undef I2OLCTGET
+# define I2OLCTGET 0xc00c6902
+#endif
+#ifdef I2OPARMGET
+# undef I2OPARMGET
+# define I2OPARMGET 0xc0186904
+#endif
+#ifdef I2OPARMSET
+# undef I2OPARMSET
+# define I2OPARMSET 0xc0186903
+#endif
+#ifdef I2OPASSTHRU
+# undef I2OPASSTHRU
+# define I2OPASSTHRU 0x8008690c
+#endif
+#ifdef I2OSWDEL
+# undef I2OSWDEL
+# define I2OSWDEL 0xc01c6907
+#endif
+#ifdef I2OSWDL
+# undef I2OSWDL
+# define I2OSWDL 0xc01c6905
+#endif
+#ifdef I2OSWUL
+# undef I2OSWUL
+# define I2OSWUL 0xc01c6906
+#endif
+#ifdef I8K_FN_STATUS
+# undef I8K_FN_STATUS
+# define I8K_FN_STATUS 0x80046983
+#endif
+#ifdef I8K_GET_FAN
+# undef I8K_GET_FAN
+# define I8K_GET_FAN 0xc0046986
+#endif
+#ifdef I8K_GET_SPEED
+# undef I8K_GET_SPEED
+# define I8K_GET_SPEED 0xc0046985
+#endif
+#ifdef I8K_GET_TEMP
+# undef I8K_GET_TEMP
+# define I8K_GET_TEMP 0x80046984
+#endif
+#ifdef I8K_POWER_STATUS
+# undef I8K_POWER_STATUS
+# define I8K_POWER_STATUS 0x80046982
+#endif
+#ifdef I8K_SET_FAN
+# undef I8K_SET_FAN
+# define I8K_SET_FAN 0xc0046987
+#endif
+#ifdef IDT77105_GETSTAT
+# undef IDT77105_GETSTAT
+# define IDT77105_GETSTAT 0x400c6132
+#endif
+#ifdef IDT77105_GETSTATZ
+# undef IDT77105_GETSTATZ
+# define IDT77105_GETSTATZ 0x400c6133
+#endif
+#ifdef IOCTL_GNTDEV_GRANT_COPY
+# undef IOCTL_GNTDEV_GRANT_COPY
+# define IOCTL_GNTDEV_GRANT_COPY 0x00084708
+#endif
+#ifdef ION_IOC_ALLOC
+# undef ION_IOC_ALLOC
+# define ION_IOC_ALLOC 0xc0144900
+#endif
+#ifdef ION_IOC_CUSTOM
+# undef ION_IOC_CUSTOM
+# define ION_IOC_CUSTOM 0xc0084906
+#endif
+#ifdef IOW_READ
+# undef IOW_READ
+# define IOW_READ 0x4004c002
+#endif
+#ifdef IOW_WRITE
+# undef IOW_WRITE
+# define IOW_WRITE 0x4004c001
+#endif
+#ifdef IPMICTL_RECEIVE_MSG
+# undef IPMICTL_RECEIVE_MSG
+# define IPMICTL_RECEIVE_MSG 0xc018690c
+#endif
+#ifdef IPMICTL_RECEIVE_MSG_TRUNC
+# undef IPMICTL_RECEIVE_MSG_TRUNC
+# define IPMICTL_RECEIVE_MSG_TRUNC 0xc018690b
+#endif
+#ifdef IPMICTL_SEND_COMMAND
+# undef IPMICTL_SEND_COMMAND
+# define IPMICTL_SEND_COMMAND 0x8014690d
+#endif
+#ifdef IPMICTL_SEND_COMMAND_SETTIME
+# undef IPMICTL_SEND_COMMAND_SETTIME
+# define IPMICTL_SEND_COMMAND_SETTIME 0x801c6915
+#endif
+#ifdef IVTVFB_IOC_DMA_FRAME
+# undef IVTVFB_IOC_DMA_FRAME
+# define IVTVFB_IOC_DMA_FRAME 0x400c56c0
+#endif
+#ifdef IVTV_IOC_DMA_FRAME
+# undef IVTV_IOC_DMA_FRAME
+# define IVTV_IOC_DMA_FRAME 0x403856c0
+#endif
+#ifdef IXJCTL_CID
+# undef IXJCTL_CID
+# define IXJCTL_CID 0x800471d4
+#endif
+#ifdef IXJCTL_CIDCW
+# undef IXJCTL_CIDCW
+# define IXJCTL_CIDCW 0x400471d9
+#endif
+#ifdef IXJCTL_DRYBUFFER_READ
+# undef IXJCTL_DRYBUFFER_READ
+# define IXJCTL_DRYBUFFER_READ 0x800471e6
+#endif
+#ifdef IXJCTL_FILTER_CADENCE
+# undef IXJCTL_FILTER_CADENCE
+# define IXJCTL_FILTER_CADENCE 0x400471d6
+#endif
+#ifdef IXJCTL_FRAMES_READ
+# undef IXJCTL_FRAMES_READ
+# define IXJCTL_FRAMES_READ 0x800471e2
+#endif
+#ifdef IXJCTL_FRAMES_WRITTEN
+# undef IXJCTL_FRAMES_WRITTEN
+# define IXJCTL_FRAMES_WRITTEN 0x800471e3
+#endif
+#ifdef IXJCTL_INIT_TONE
+# undef IXJCTL_INIT_TONE
+# define IXJCTL_INIT_TONE 0x400471c9
+#endif
+#ifdef IXJCTL_READ_WAIT
+# undef IXJCTL_READ_WAIT
+# define IXJCTL_READ_WAIT 0x800471e4
+#endif
+#ifdef IXJCTL_SET_FILTER
+# undef IXJCTL_SET_FILTER
+# define IXJCTL_SET_FILTER 0x400471c7
+#endif
+#ifdef IXJCTL_SET_FILTER_RAW
+# undef IXJCTL_SET_FILTER_RAW
+# define IXJCTL_SET_FILTER_RAW 0x400471dd
+#endif
+#ifdef IXJCTL_SIGCTL
+# undef IXJCTL_SIGCTL
+# define IXJCTL_SIGCTL 0x400471e9
+#endif
+#ifdef IXJCTL_TONE_CADENCE
+# undef IXJCTL_TONE_CADENCE
+# define IXJCTL_TONE_CADENCE 0x400471ca
+#endif
+#ifdef IXJCTL_VERSION
+# undef IXJCTL_VERSION
+# define IXJCTL_VERSION 0x800471da
+#endif
+#ifdef IXJCTL_WRITE_WAIT
+# undef IXJCTL_WRITE_WAIT
+# define IXJCTL_WRITE_WAIT 0x800471e5
+#endif
+#ifdef KCOV_INIT_TRACE
+# undef KCOV_INIT_TRACE
+# define KCOV_INIT_TRACE 0x80046301
+#endif
+#ifdef KVM_S390_STORE_STATUS
+# undef KVM_S390_STORE_STATUS
+# define KVM_S390_STORE_STATUS 0x4004ae95
+#endif
+#ifdef KVM_S390_VCPU_FAULT
+# undef KVM_S390_VCPU_FAULT
+# define KVM_S390_VCPU_FAULT 0x4004ae52
+#endif
+#ifdef MATROXFB_GET_ALL_OUTPUTS
+# undef MATROXFB_GET_ALL_OUTPUTS
+# define MATROXFB_GET_ALL_OUTPUTS 0x80046efb
+#endif
+#ifdef MATROXFB_GET_AVAILABLE_OUTPUTS
+# undef MATROXFB_GET_AVAILABLE_OUTPUTS
+# define MATROXFB_GET_AVAILABLE_OUTPUTS 0x80046ef9
+#endif
+#ifdef MATROXFB_GET_OUTPUT_CONNECTION
+# undef MATROXFB_GET_OUTPUT_CONNECTION
+# define MATROXFB_GET_OUTPUT_CONNECTION 0x80046ef8
+#endif
+#ifdef MATROXFB_GET_OUTPUT_MODE
+# undef MATROXFB_GET_OUTPUT_MODE
+# define MATROXFB_GET_OUTPUT_MODE 0xc0046efa
+#endif
+#ifdef MATROXFB_SET_OUTPUT_CONNECTION
+# undef MATROXFB_SET_OUTPUT_CONNECTION
+# define MATROXFB_SET_OUTPUT_CONNECTION 0x40046ef8
+#endif
+#ifdef MATROXFB_SET_OUTPUT_MODE
+# undef MATROXFB_SET_OUTPUT_MODE
+# define MATROXFB_SET_OUTPUT_MODE 0x40046efa
+#endif
+#ifdef MEDIA_IOC_ENUM_LINKS
+# undef MEDIA_IOC_ENUM_LINKS
+# define MEDIA_IOC_ENUM_LINKS 0xc01c7c02
+#endif
+#ifdef MEMREADOOB
+# undef MEMREADOOB
+# define MEMREADOOB 0xc00c4d04
+#endif
+#ifdef MEMWRITEOOB
+# undef MEMWRITEOOB
+# define MEMWRITEOOB 0xc00c4d03
+#endif
+#ifdef MGSL_IOCGPARAMS
+# undef MGSL_IOCGPARAMS
+# define MGSL_IOCGPARAMS 0x80206d01
+#endif
+#ifdef MGSL_IOCSPARAMS
+# undef MGSL_IOCSPARAMS
+# define MGSL_IOCSPARAMS 0x40206d00
+#endif
+#ifdef MIC_VIRTIO_ADD_DEVICE
+# undef MIC_VIRTIO_ADD_DEVICE
+# define MIC_VIRTIO_ADD_DEVICE 0xc0047301
+#endif
+#ifdef MIC_VIRTIO_CONFIG_CHANGE
+# undef MIC_VIRTIO_CONFIG_CHANGE
+# define MIC_VIRTIO_CONFIG_CHANGE 0xc0047305
+#endif
+#ifdef MIC_VIRTIO_COPY_DESC
+# undef MIC_VIRTIO_COPY_DESC
+# define MIC_VIRTIO_COPY_DESC 0xc0047302
+#endif
+#ifdef MMTIMER_GETCOUNTER
+# undef MMTIMER_GETCOUNTER
+# define MMTIMER_GETCOUNTER 0x80046d09
+#endif
+#ifdef MMTIMER_GETFREQ
+# undef MMTIMER_GETFREQ
+# define MMTIMER_GETFREQ 0x80046d02
+#endif
+#ifdef MMTIMER_GETRES
+# undef MMTIMER_GETRES
+# define MMTIMER_GETRES 0x80046d01
+#endif
+#ifdef MTIOCGET
+# undef MTIOCGET
+# define MTIOCGET 0x801c6d02
+#endif
+#ifdef MTIOCPOS
+# undef MTIOCPOS
+# define MTIOCPOS 0x80046d03
+#endif
+#ifdef NCIUARTSETDRIVER
+# undef NCIUARTSETDRIVER
+# define NCIUARTSETDRIVER 0x40045500
+#endif
+#ifdef NCP_IOC_GET_FS_INFO_V2
+# undef NCP_IOC_GET_FS_INFO_V2
+# define NCP_IOC_GET_FS_INFO_V2 0xc0246e04
+#endif
+#ifdef NCP_IOC_GETMOUNTUID2
+# undef NCP_IOC_GETMOUNTUID2
+# define NCP_IOC_GETMOUNTUID2 0x40046e02
+#endif
+#ifdef NCP_IOC_GETOBJECTNAME
+# undef NCP_IOC_GETOBJECTNAME
+# define NCP_IOC_GETOBJECTNAME 0xc00c6e09
+#endif
+#ifdef NCP_IOC_GETPRIVATEDATA
+# undef NCP_IOC_GETPRIVATEDATA
+# define NCP_IOC_GETPRIVATEDATA 0xc0086e0a
+#endif
+#ifdef NCP_IOC_NCPREQUEST
+# undef NCP_IOC_NCPREQUEST
+# define NCP_IOC_NCPREQUEST 0x800c6e01
+#endif
+#ifdef NCP_IOC_SETOBJECTNAME
+# undef NCP_IOC_SETOBJECTNAME
+# define NCP_IOC_SETOBJECTNAME 0x800c6e09
+#endif
+#ifdef NCP_IOC_SETPRIVATEDATA
+# undef NCP_IOC_SETPRIVATEDATA
+# define NCP_IOC_SETPRIVATEDATA 0x80086e0a
+#endif
+#ifdef NS_GETPSTAT
+# undef NS_GETPSTAT
+# define NS_GETPSTAT 0xc00c6161
+#endif
+#ifdef NS_SETBUFLEV
+# undef NS_SETBUFLEV
+# define NS_SETBUFLEV 0x400c6162
+#endif
+#ifdef OMAPFB_MEMORY_READ
+# undef OMAPFB_MEMORY_READ
+# define OMAPFB_MEMORY_READ 0x80104f3a
+#endif
+#ifdef OSD_GET_CAPABILITY
+# undef OSD_GET_CAPABILITY
+# define OSD_GET_CAPABILITY 0x80086fa1
+#endif
+#ifdef OSD_SEND_CMD
+# undef OSD_SEND_CMD
+# define OSD_SEND_CMD 0x401c6fa0
+#endif
+#ifdef PERF_EVENT_IOC_ID
+# undef PERF_EVENT_IOC_ID
+# define PERF_EVENT_IOC_ID 0x80042407
+#endif
+#ifdef PERF_EVENT_IOC_SET_FILTER
+# undef PERF_EVENT_IOC_SET_FILTER
+# define PERF_EVENT_IOC_SET_FILTER 0x40042406
+#endif
+#ifdef PHN_GET_REG
+# undef PHN_GET_REG
+# define PHN_GET_REG 0xc0047000
+#endif
+#ifdef PHN_GET_REGS
+# undef PHN_GET_REGS
+# define PHN_GET_REGS 0xc0047002
+#endif
+#ifdef PHN_SET_REG
+# undef PHN_SET_REG
+# define PHN_SET_REG 0x40047001
+#endif
+#ifdef PHN_SET_REGS
+# undef PHN_SET_REGS
+# define PHN_SET_REGS 0x40047003
+#endif
+#ifdef PHONE_CAPABILITIES_CHECK
+# undef PHONE_CAPABILITIES_CHECK
+# define PHONE_CAPABILITIES_CHECK 0x40047182
+#endif
+#ifdef PHONE_CAPABILITIES_LIST
+# undef PHONE_CAPABILITIES_LIST
+# define PHONE_CAPABILITIES_LIST 0x80047181
+#endif
+#ifdef PHONE_QUERY_CODEC
+# undef PHONE_QUERY_CODEC
+# define PHONE_QUERY_CODEC 0xc00471a7
+#endif
+#ifdef PHONE_RING_START
+# undef PHONE_RING_START
+# define PHONE_RING_START 0x40047187
+#endif
+#ifdef PMU_IOC_CAN_SLEEP
+# undef PMU_IOC_CAN_SLEEP
+# define PMU_IOC_CAN_SLEEP 0x80044205
+#endif
+#ifdef PMU_IOC_GET_BACKLIGHT
+# undef PMU_IOC_GET_BACKLIGHT
+# define PMU_IOC_GET_BACKLIGHT 0x80044201
+#endif
+#ifdef PMU_IOC_GET_MODEL
+# undef PMU_IOC_GET_MODEL
+# define PMU_IOC_GET_MODEL 0x80044203
+#endif
+#ifdef PMU_IOC_GRAB_BACKLIGHT
+# undef PMU_IOC_GRAB_BACKLIGHT
+# define PMU_IOC_GRAB_BACKLIGHT 0x80044206
+#endif
+#ifdef PMU_IOC_HAS_ADB
+# undef PMU_IOC_HAS_ADB
+# define PMU_IOC_HAS_ADB 0x80044204
+#endif
+#ifdef PMU_IOC_SET_BACKLIGHT
+# undef PMU_IOC_SET_BACKLIGHT
+# define PMU_IOC_SET_BACKLIGHT 0x40044202
+#endif
+#ifdef PPPIOCGCOMPRESSORS
+# undef PPPIOCGCOMPRESSORS
+# define PPPIOCGCOMPRESSORS 0x80207486
+#endif
+#ifdef PPPIOCSACTIVE
+# undef PPPIOCSACTIVE
+# define PPPIOCSACTIVE 0x40087446
+#endif
+#ifdef PPPIOCSCOMPRESS
+# undef PPPIOCSCOMPRESS
+# define PPPIOCSCOMPRESS 0x400c744d
+#endif
+#ifdef PPPIOCSPASS
+# undef PPPIOCSPASS
+# define PPPIOCSPASS 0x40087447
+#endif
+#ifdef PPPOEIOCSFWD
+# undef PPPOEIOCSFWD
+# define PPPOEIOCSFWD 0x4004b100
+#endif
+#ifdef PPS_FETCH
+# undef PPS_FETCH
+# define PPS_FETCH 0xc00470a4
+#endif
+#ifdef PPS_GETCAP
+# undef PPS_GETCAP
+# define PPS_GETCAP 0x800470a3
+#endif
+#ifdef PPS_GETPARAMS
+# undef PPS_GETPARAMS
+# define PPS_GETPARAMS 0x800470a1
+#endif
+#ifdef PPS_KC_BIND
+# undef PPS_KC_BIND
+# define PPS_KC_BIND 0x400470a5
+#endif
+#ifdef PPS_SETPARAMS
+# undef PPS_SETPARAMS
+# define PPS_SETPARAMS 0x400470a2
+#endif
+#ifdef REISERFS_IOC_UNPACK
+# undef REISERFS_IOC_UNPACK
+# define REISERFS_IOC_UNPACK 0x4004cd01
+#endif
+#ifdef RTC_EPOCH_READ
+# undef RTC_EPOCH_READ
+# define RTC_EPOCH_READ 0x8004700d
+#endif
+#ifdef RTC_EPOCH_SET
+# undef RTC_EPOCH_SET
+# define RTC_EPOCH_SET 0x4004700e
+#endif
+#ifdef RTC_IRQP_READ
+# undef RTC_IRQP_READ
+# define RTC_IRQP_READ 0x8004700b
+#endif
+#ifdef RTC_IRQP_SET
+# undef RTC_IRQP_SET
+# define RTC_IRQP_SET 0x4004700c
+#endif
+#ifdef RTC_PLL_GET
+# undef RTC_PLL_GET
+# define RTC_PLL_GET 0x801c7011
+#endif
+#ifdef RTC_PLL_SET
+# undef RTC_PLL_SET
+# define RTC_PLL_SET 0x401c7012
+#endif
+#ifdef SNDCTL_DSP_MAPINBUF
+# undef SNDCTL_DSP_MAPINBUF
+# define SNDCTL_DSP_MAPINBUF 0x80085013
+#endif
+#ifdef SNDCTL_DSP_MAPOUTBUF
+# undef SNDCTL_DSP_MAPOUTBUF
+# define SNDCTL_DSP_MAPOUTBUF 0x80085014
+#endif
+#ifdef SNDRV_CTL_IOCTL_ELEM_LIST
+# undef SNDRV_CTL_IOCTL_ELEM_LIST
+# define SNDRV_CTL_IOCTL_ELEM_LIST 0xc0485510
+#endif
+#ifdef SNDRV_CTL_IOCTL_ELEM_READ
+# undef SNDRV_CTL_IOCTL_ELEM_READ
+# define SNDRV_CTL_IOCTL_ELEM_READ 0xc2c85512
+#endif
+#ifdef SNDRV_CTL_IOCTL_ELEM_WRITE
+# undef SNDRV_CTL_IOCTL_ELEM_WRITE
+# define SNDRV_CTL_IOCTL_ELEM_WRITE 0xc2c85513
+#endif
+#ifdef SNDRV_EMU10K1_IOCTL_CODE_PEEK
+# undef SNDRV_EMU10K1_IOCTL_CODE_PEEK
+# define SNDRV_EMU10K1_IOCTL_CODE_PEEK 0xc18c4812
+#endif
+#ifdef SNDRV_EMU10K1_IOCTL_CODE_POKE
+# undef SNDRV_EMU10K1_IOCTL_CODE_POKE
+# define SNDRV_EMU10K1_IOCTL_CODE_POKE 0x418c4811
+#endif
+#ifdef SNDRV_EMU10K1_IOCTL_TRAM_PEEK
+# undef SNDRV_EMU10K1_IOCTL_TRAM_PEEK
+# define SNDRV_EMU10K1_IOCTL_TRAM_PEEK 0xc00c4822
+#endif
+#ifdef SNDRV_EMU10K1_IOCTL_TRAM_POKE
+# undef SNDRV_EMU10K1_IOCTL_TRAM_POKE
+# define SNDRV_EMU10K1_IOCTL_TRAM_POKE 0x400c4821
+#endif
+#ifdef SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE
+# undef SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE
+# define SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE 0x40044842
+#endif
+#ifdef SNDRV_HDSPM_IOCTL_GET_MIXER
+# undef SNDRV_HDSPM_IOCTL_GET_MIXER
+# define SNDRV_HDSPM_IOCTL_GET_MIXER 0x80044844
+#endif
+#ifdef SNDRV_HWDEP_IOCTL_DSP_LOAD
+# undef SNDRV_HWDEP_IOCTL_DSP_LOAD
+# define SNDRV_HWDEP_IOCTL_DSP_LOAD 0x40504803
+#endif
+#ifdef SNDRV_PCM_IOCTL_DELAY
+# undef SNDRV_PCM_IOCTL_DELAY
+# define SNDRV_PCM_IOCTL_DELAY 0x80044121
+#endif
+#ifdef SNDRV_PCM_IOCTL_FORWARD
+# undef SNDRV_PCM_IOCTL_FORWARD
+# define SNDRV_PCM_IOCTL_FORWARD 0x40044149
+#endif
+#ifdef SNDRV_PCM_IOCTL_HW_PARAMS
+# undef SNDRV_PCM_IOCTL_HW_PARAMS
+# define SNDRV_PCM_IOCTL_HW_PARAMS 0xc25c4111
+#endif
+#ifdef SNDRV_PCM_IOCTL_HW_REFINE
+# undef SNDRV_PCM_IOCTL_HW_REFINE
+# define SNDRV_PCM_IOCTL_HW_REFINE 0xc25c4110
+#endif
+#ifdef SNDRV_PCM_IOCTL_READI_FRAMES
+# undef SNDRV_PCM_IOCTL_READI_FRAMES
+# define SNDRV_PCM_IOCTL_READI_FRAMES 0x800c4151
+#endif
+#ifdef SNDRV_PCM_IOCTL_READN_FRAMES
+# undef SNDRV_PCM_IOCTL_READN_FRAMES
+# define SNDRV_PCM_IOCTL_READN_FRAMES 0x800c4153
+#endif
+#ifdef SNDRV_PCM_IOCTL_REWIND
+# undef SNDRV_PCM_IOCTL_REWIND
+# define SNDRV_PCM_IOCTL_REWIND 0x40044146
+#endif
+#ifdef SNDRV_PCM_IOCTL_STATUS
+# undef SNDRV_PCM_IOCTL_STATUS
+# define SNDRV_PCM_IOCTL_STATUS 0x80804120
+#endif
+#ifdef SNDRV_PCM_IOCTL_STATUS_EXT
+# undef SNDRV_PCM_IOCTL_STATUS_EXT
+# define SNDRV_PCM_IOCTL_STATUS_EXT 0xc0804124
+#endif
+#ifdef SNDRV_PCM_IOCTL_SW_PARAMS
+# undef SNDRV_PCM_IOCTL_SW_PARAMS
+# define SNDRV_PCM_IOCTL_SW_PARAMS 0xc0684113
+#endif
+#ifdef SNDRV_PCM_IOCTL_WRITEI_FRAMES
+# undef SNDRV_PCM_IOCTL_WRITEI_FRAMES
+# define SNDRV_PCM_IOCTL_WRITEI_FRAMES 0x400c4150
+#endif
+#ifdef SNDRV_PCM_IOCTL_WRITEN_FRAMES
+# undef SNDRV_PCM_IOCTL_WRITEN_FRAMES
+# define SNDRV_PCM_IOCTL_WRITEN_FRAMES 0x400c4152
+#endif
+#ifdef SNDRV_RAWMIDI_IOCTL_PARAMS
+# undef SNDRV_RAWMIDI_IOCTL_PARAMS
+# define SNDRV_RAWMIDI_IOCTL_PARAMS 0xc0205710
+#endif
+#ifdef SNDRV_RAWMIDI_IOCTL_STATUS
+# undef SNDRV_RAWMIDI_IOCTL_STATUS
+# define SNDRV_RAWMIDI_IOCTL_STATUS 0xc0305720
+#endif
+#ifdef SNDRV_SEQ_IOCTL_CREATE_PORT
+# undef SNDRV_SEQ_IOCTL_CREATE_PORT
+# define SNDRV_SEQ_IOCTL_CREATE_PORT 0xc0a45320
+#endif
+#ifdef SNDRV_SEQ_IOCTL_DELETE_PORT
+# undef SNDRV_SEQ_IOCTL_DELETE_PORT
+# define SNDRV_SEQ_IOCTL_DELETE_PORT 0x40a45321
+#endif
+#ifdef SNDRV_SEQ_IOCTL_GET_PORT_INFO
+# undef SNDRV_SEQ_IOCTL_GET_PORT_INFO
+# define SNDRV_SEQ_IOCTL_GET_PORT_INFO 0xc0a45322
+#endif
+#ifdef SNDRV_SEQ_IOCTL_QUERY_NEXT_PORT
+# undef SNDRV_SEQ_IOCTL_QUERY_NEXT_PORT
+# define SNDRV_SEQ_IOCTL_QUERY_NEXT_PORT 0xc0a45352
+#endif
+#ifdef SNDRV_SEQ_IOCTL_SET_PORT_INFO
+# undef SNDRV_SEQ_IOCTL_SET_PORT_INFO
+# define SNDRV_SEQ_IOCTL_SET_PORT_INFO 0x40a45323
+#endif
+#ifdef SNDRV_TIMER_IOCTL_GINFO
+# undef SNDRV_TIMER_IOCTL_GINFO
+# define SNDRV_TIMER_IOCTL_GINFO 0xc0e05403
+#endif
+#ifdef SNDRV_TIMER_IOCTL_GPARAMS
+# undef SNDRV_TIMER_IOCTL_GPARAMS
+# define SNDRV_TIMER_IOCTL_GPARAMS 0x403c5404
+#endif
+#ifdef SNDRV_TIMER_IOCTL_GSTATUS
+# undef SNDRV_TIMER_IOCTL_GSTATUS
+# define SNDRV_TIMER_IOCTL_GSTATUS 0xc0405405
+#endif
+#ifdef SNDRV_TIMER_IOCTL_INFO
+# undef SNDRV_TIMER_IOCTL_INFO
+# define SNDRV_TIMER_IOCTL_INFO 0x80e05411
+#endif
+#ifdef SPIOCSTYPE
+# undef SPIOCSTYPE
+# define SPIOCSTYPE 0x40047101
+#endif
+#ifdef TUNATTACHFILTER
+# undef TUNATTACHFILTER
+# define TUNATTACHFILTER 0x400854d5
+#endif
+#ifdef TUNDETACHFILTER
+# undef TUNDETACHFILTER
+# define TUNDETACHFILTER 0x400854d6
+#endif
+#ifdef TUNER_SET_CONFIG
+# undef TUNER_SET_CONFIG
+# define TUNER_SET_CONFIG 0x4008645c
+#endif
+#ifdef TUNGETFILTER
+# undef TUNGETFILTER
+# define TUNGETFILTER 0x800854db
+#endif
+#ifdef UDF_GETEABLOCK
+# undef UDF_GETEABLOCK
+# define UDF_GETEABLOCK 0x80046c41
+#endif
+#ifdef UDF_GETVOLIDENT
+# undef UDF_GETVOLIDENT
+# define UDF_GETVOLIDENT 0x80046c42
+#endif
+#ifdef UDF_RELOCATE_BLOCKS
+# undef UDF_RELOCATE_BLOCKS
+# define UDF_RELOCATE_BLOCKS 0xc0046c43
+#endif
+#ifdef UI_BEGIN_FF_UPLOAD
+# undef UI_BEGIN_FF_UPLOAD
+# define UI_BEGIN_FF_UPLOAD 0xc06055c8
+#endif
+#ifdef UI_END_FF_UPLOAD
+# undef UI_END_FF_UPLOAD
+# define UI_END_FF_UPLOAD 0x406055c9
+#endif
+#ifdef UI_SET_PHYS
+# undef UI_SET_PHYS
+# define UI_SET_PHYS 0x4004556c
+#endif
+#ifdef USBDEVFS_BULK
+# undef USBDEVFS_BULK
+# define USBDEVFS_BULK 0xc0105502
+#endif
+#ifdef USBDEVFS_CONTROL
+# undef USBDEVFS_CONTROL
+# define USBDEVFS_CONTROL 0xc0105500
+#endif
+#ifdef USBDEVFS_DISCSIGNAL
+# undef USBDEVFS_DISCSIGNAL
+# define USBDEVFS_DISCSIGNAL 0x8008550e
+#endif
+#ifdef USBDEVFS_IOCTL
+# undef USBDEVFS_IOCTL
+# define USBDEVFS_IOCTL 0xc00c5512
+#endif
+#ifdef USBDEVFS_REAPURB
+# undef USBDEVFS_REAPURB
+# define USBDEVFS_REAPURB 0x4004550c
+#endif
+#ifdef USBDEVFS_REAPURBNDELAY
+# undef USBDEVFS_REAPURBNDELAY
+# define USBDEVFS_REAPURBNDELAY 0x4004550d
+#endif
+#ifdef USBDEVFS_SUBMITURB
+# undef USBDEVFS_SUBMITURB
+# define USBDEVFS_SUBMITURB 0x802c550a
+#endif
+#ifdef UVCIOC_CTRL_MAP
+# undef UVCIOC_CTRL_MAP
+# define UVCIOC_CTRL_MAP 0xc0587520
+#endif
+#ifdef UVCIOC_CTRL_QUERY
+# undef UVCIOC_CTRL_QUERY
+# define UVCIOC_CTRL_QUERY 0xc00c7521
+#endif
+#ifdef VIDEO_SET_SPU_PALETTE
+# undef VIDEO_SET_SPU_PALETTE
+# define VIDEO_SET_SPU_PALETTE 0x40086f33
+#endif
+#ifdef VIDEO_STILLPICTURE
+# undef VIDEO_STILLPICTURE
+# define VIDEO_STILLPICTURE 0x40086f1e
+#endif
+#ifdef VIDIOC_AM437X_CCDC_CFG
+# undef VIDIOC_AM437X_CCDC_CFG
+# define VIDIOC_AM437X_CCDC_CFG 0x400456c1
+#endif
+#ifdef VIDIOC_CREATE_BUFS
+# undef VIDIOC_CREATE_BUFS
+# define VIDIOC_CREATE_BUFS 0xc0f8565c
+#endif
+#ifdef VIDIOC_DQBUF
+# undef VIDIOC_DQBUF
+# define VIDIOC_DQBUF 0xc0505611
+#endif
+#ifdef VIDIOC_G_EDID
+# undef VIDIOC_G_EDID
+# define VIDIOC_G_EDID 0xc0245628
+#endif
+#ifdef VIDIOC_G_EXT_CTRLS
+# undef VIDIOC_G_EXT_CTRLS
+# define VIDIOC_G_EXT_CTRLS 0xc0185647
+#endif
+#ifdef VIDIOC_G_FBUF
+# undef VIDIOC_G_FBUF
+# define VIDIOC_G_FBUF 0x802c560a
+#endif
+#ifdef VIDIOC_G_FMT
+# undef VIDIOC_G_FMT
+# define VIDIOC_G_FMT 0xc0cc5604
+#endif
+#ifdef VIDIOC_OMAP3ISP_CCDC_CFG
+# undef VIDIOC_OMAP3ISP_CCDC_CFG
+# define VIDIOC_OMAP3ISP_CCDC_CFG 0xc02056c1
+#endif
+#ifdef VIDIOC_OMAP3ISP_PRV_CFG
+# undef VIDIOC_OMAP3ISP_PRV_CFG
+# define VIDIOC_OMAP3ISP_PRV_CFG 0xc03c56c2
+#endif
+#ifdef VIDIOC_OMAP3ISP_STAT_EN
+# undef VIDIOC_OMAP3ISP_STAT_EN
+# define VIDIOC_OMAP3ISP_STAT_EN 0xc00456c7
+#endif
+#ifdef VIDIOC_OMAP3ISP_STAT_REQ
+# undef VIDIOC_OMAP3ISP_STAT_REQ
+# define VIDIOC_OMAP3ISP_STAT_REQ 0xc02056c6
+#endif
+#ifdef VIDIOC_PREPARE_BUF
+# undef VIDIOC_PREPARE_BUF
+# define VIDIOC_PREPARE_BUF 0xc050565d
+#endif
+#ifdef VIDIOC_QBUF
+# undef VIDIOC_QBUF
+# define VIDIOC_QBUF 0xc050560f
+#endif
+#ifdef VIDIOC_QUERYBUF
+# undef VIDIOC_QUERYBUF
+# define VIDIOC_QUERYBUF 0xc0505609
+#endif
+#ifdef VIDIOC_S_EDID
+# undef VIDIOC_S_EDID
+# define VIDIOC_S_EDID 0xc0245629
+#endif
+#ifdef VIDIOC_S_EXT_CTRLS
+# undef VIDIOC_S_EXT_CTRLS
+# define VIDIOC_S_EXT_CTRLS 0xc0185648
+#endif
+#ifdef VIDIOC_S_FBUF
+# undef VIDIOC_S_FBUF
+# define VIDIOC_S_FBUF 0x402c560b
+#endif
+#ifdef VIDIOC_S_FMT
+# undef VIDIOC_S_FMT
+# define VIDIOC_S_FMT 0xc0cc5605
+#endif
+#ifdef VIDIOC_SUBDEV_G_EDID
+# undef VIDIOC_SUBDEV_G_EDID
+# define VIDIOC_SUBDEV_G_EDID 0xc0245628
+#endif
+#ifdef VIDIOC_SUBDEV_S_EDID
+# undef VIDIOC_SUBDEV_S_EDID
+# define VIDIOC_SUBDEV_S_EDID 0xc0245629
+#endif
+#ifdef VIDIOC_TRY_EXT_CTRLS
+# undef VIDIOC_TRY_EXT_CTRLS
+# define VIDIOC_TRY_EXT_CTRLS 0xc0185649
+#endif
+#ifdef VIDIOC_TRY_FMT
+# undef VIDIOC_TRY_FMT
+# define VIDIOC_TRY_FMT 0xc0cc5640
+#endif
+#ifdef VPFE_CMD_S_CCDC_RAW_PARAMS
+# undef VPFE_CMD_S_CCDC_RAW_PARAMS
+# define VPFE_CMD_S_CCDC_RAW_PARAMS 0x400456c1
+#endif
+#ifdef ZATM_GETPOOL
+# undef ZATM_GETPOOL
+# define ZATM_GETPOOL 0x400c6161
+#endif
+#ifdef ZATM_GETPOOLZ
+# undef ZATM_GETPOOLZ
+# define ZATM_GETPOOLZ 0x400c6162
+#endif
+#ifdef ZATM_SETPOOL
+# undef ZATM_SETPOOL
+# define ZATM_SETPOOL 0x400c6163
+#endif
diff --git a/ioctlent0.h b/ioctlent0.h
index 589615e..8fc03c3 100644
--- a/ioctlent0.h
+++ b/ioctlent0.h
@@ -83,6 +83,7 @@
 { "STOP_ARRAY", 0x00000932 },
 { "STOP_ARRAY_RO", 0x00000933 },
 { "RESTART_ARRAY_RW", 0x00000934 },
+{ "CLUSTERED_DISK_NACK", 0x00000935 },
 { "BLKROSET", 0x0000125d },
 { "BLKROGET", 0x0000125e },
 { "BLKRRPART", 0x0000125f },
@@ -108,6 +109,7 @@
 { "BLKSECDISCARD", 0x0000127d },
 { "BLKROTATIONAL", 0x0000127e },
 { "BLKZEROOUT", 0x0000127f },
+{ "BLKDAXGET", 0x00001281 },
 { "IB_USER_MAD_ENABLE_PKEY", 0x00001b03 },
 { "SG_SET_TIMEOUT", 0x00002201 },
 { "SG_GET_TIMEOUT", 0x00002202 },
@@ -169,6 +171,10 @@
 { "VFIO_IOMMU_UNMAP_DMA", 0x00003b72 },
 { "VFIO_IOMMU_ENABLE", 0x00003b73 },
 { "VFIO_IOMMU_DISABLE", 0x00003b74 },
+{ "VFIO_IOMMU_SPAPR_REGISTER_MEMORY", 0x00003b75 },
+{ "VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY", 0x00003b76 },
+{ "VFIO_IOMMU_SPAPR_TCE_CREATE", 0x00003b77 },
+{ "VFIO_IOMMU_SPAPR_TCE_REMOVE", 0x00003b78 },
 { "VFIO_EEH_PE_OP", 0x00003b79 },
 { "AGPIOC_ACQUIRE", 0x00004101 },
 { "APM_IOC_STANDBY", 0x00004101 },
@@ -317,11 +323,14 @@
 { "LOOP_GET_STATUS64", 0x00004c05 },
 { "LOOP_CHANGE_FD", 0x00004c06 },
 { "LOOP_SET_CAPACITY", 0x00004c07 },
+{ "LOOP_SET_DIRECT_IO", 0x00004c08 },
 { "LOOP_CTL_ADD", 0x00004c80 },
 { "LOOP_CTL_REMOVE", 0x00004c81 },
 { "LOOP_CTL_GET_FREE", 0x00004c82 },
 { "MTDFILEMODE", 0x00004d13 },
 { "NVME_IOCTL_ID", 0x00004e40 },
+{ "NVME_IOCTL_RESET", 0x00004e44 },
+{ "NVME_IOCTL_SUBSYS_RESET", 0x00004e45 },
 { "UBI_IOCVOLRMBLK", 0x00004f08 },
 { "OMAPFB_SYNC_GFX", 0x00004f25 },
 { "OMAPFB_VSYNC", 0x00004f26 },
@@ -490,7 +499,8 @@
 { "USBTMC_IOCTL_ABORT_BULK_IN", 0x00005b04 },
 { "USBTMC_IOCTL_CLEAR_OUT_HALT", 0x00005b06 },
 { "USBTMC_IOCTL_CLEAR_IN_HALT", 0x00005b07 },
-{ "ANDROID_ALARM_WAIT", 0x00006101 },
+{ "USBTMC488_IOCTL_GOTO_LOCAL", 0x00005b14 },
+{ "USBTMC488_IOCTL_LOCAL_LOCKOUT", 0x00005b15 },
 { "NS_ADJBUFLEV", 0x00006163 },
 { "SIOCSIFATMTCP", 0x00006180 },
 { "ATMTCP_CREATE", 0x0000618e },
@@ -514,6 +524,8 @@
 { "BC_ENTER_LOOPER", 0x0000630c },
 { "BC_EXIT_LOOPER", 0x0000630d },
 { "CHIOINITELEM", 0x00006311 },
+{ "KCOV_ENABLE", 0x00006364 },
+{ "KCOV_DISABLE", 0x00006365 },
 { "DRM_IOCTL_SET_MASTER", 0x0000641e },
 { "DRM_IOCTL_DROP_MASTER", 0x0000641f },
 { "DRM_IOCTL_AGP_ACQUIRE", 0x00006430 },
@@ -846,15 +858,9 @@
 { "RAW_GETBIND", 0x0000ac01 },
 { "KVM_GET_API_VERSION", 0x0000ae00 },
 { "KVM_CREATE_VM", 0x0000ae01 },
-{ "LOGGER_GET_LOG_BUF_SIZE", 0x0000ae01 },
-{ "LOGGER_GET_LOG_LEN", 0x0000ae02 },
 { "KVM_CHECK_EXTENSION", 0x0000ae03 },
-{ "LOGGER_GET_NEXT_ENTRY_LEN", 0x0000ae03 },
 { "KVM_GET_VCPU_MMAP_SIZE", 0x0000ae04 },
-{ "LOGGER_FLUSH_LOG", 0x0000ae04 },
-{ "LOGGER_GET_VERSION", 0x0000ae05 },
 { "KVM_S390_ENABLE_SIE", 0x0000ae06 },
-{ "LOGGER_SET_VERSION", 0x0000ae06 },
 { "KVM_CREATE_VCPU", 0x0000ae41 },
 { "KVM_SET_NR_MMU_PAGES", 0x0000ae44 },
 { "KVM_GET_NR_MMU_PAGES", 0x0000ae45 },
@@ -869,6 +875,7 @@
 { "KVM_SET_TSC_KHZ", 0x0000aea2 },
 { "KVM_GET_TSC_KHZ", 0x0000aea3 },
 { "KVM_KVMCLOCK_CTRL", 0x0000aead },
+{ "KVM_SMI", 0x0000aeb7 },
 { "VHOST_SET_OWNER", 0x0000af01 },
 { "VHOST_RESET_OWNER", 0x0000af02 },
 { "PPPOEIOCDFWD", 0x0000b101 },
@@ -876,11 +883,17 @@
 { "IOCTL_EVTCHN_BIND_UNBOUND_PORT", 0x00044502 },
 { "IOCTL_EVTCHN_UNBIND", 0x00044503 },
 { "IOCTL_EVTCHN_NOTIFY", 0x00044504 },
+{ "IOCTL_GNTDEV_SET_MAX_GRANTS", 0x00044703 },
 { "IOCTL_EVTCHN_BIND_INTERDOMAIN", 0x00084501 },
-{ "SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER", 0x40005344 },
+{ "IOCTL_GNTDEV_UNMAP_GRANT_REF", 0x00104701 },
+{ "IOCTL_GNTDEV_SET_UNMAP_NOTIFY", 0x00104707 },
+{ "IOCTL_GNTDEV_GRANT_COPY", 0x00104708 },
+{ "IOCTL_GNTDEV_MAP_GRANT_REF", 0x00184700 },
+{ "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", 0x00184702 },
 { "MFB_SET_ALPHA", 0x40014d00 },
 { "MFB_SET_GAMMA", 0x40014d01 },
 { "MFB_SET_BRIGHTNESS", 0x40014d03 },
+{ "USBTMC488_IOCTL_REN_CONTROL", 0x40015b13 },
 { "SPI_IOC_WR_MODE", 0x40016b01 },
 { "SPI_IOC_WR_LSB_FIRST", 0x40016b02 },
 { "SPI_IOC_WR_BITS_PER_WORD", 0x40016b03 },
@@ -894,6 +907,7 @@
 { "SONYPI_IOCSFAN", 0x4001760b },
 { "ATM_SETBACKEND", 0x400261f2 },
 { "ATM_NEWBACKENDIF", 0x400261f3 },
+{ "RIO_MPORT_MAINT_HDID_SET", 0x40026d01 },
 { "NCP_IOC_GETMOUNTUID", 0x40026e02 },
 { "AUDIO_SET_ATTRIBUTES", 0x40026f11 },
 { "DMX_ADD_PID", 0x40026f33 },
@@ -908,17 +922,16 @@
 { "FW_CDEV_IOC_STOP_ISO", 0x4004230b },
 { "FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE", 0x4004230e },
 { "FW_CDEV_IOC_FLUSH_ISO", 0x40042318 },
-{ "BLKI2OSRSTRAT", 0x40043203 },
-{ "BLKI2OSWSTRAT", 0x40043204 },
+{ "PERF_EVENT_IOC_SET_BPF", 0x40042408 },
 { "SNAPSHOT_CREATE_IMAGE", 0x40043311 },
 { "PTP_ENABLE_PPS", 0x40043d04 },
-{ "SYNC_IOC_WAIT", 0x40043e00 },
 { "SNDRV_PCM_IOCTL_TSTAMP", 0x40044102 },
 { "SNDRV_PCM_IOCTL_TTSTAMP", 0x40044103 },
 { "AGPIOC_DEALLOCATE", 0x40044107 },
 { "SNDRV_PCM_IOCTL_PAUSE", 0x40044145 },
 { "SNDRV_PCM_IOCTL_LINK", 0x40044160 },
 { "CCISS_REGNEWDISK", 0x4004420d },
+{ "CS_SET_WAKELINE", 0x40044317 },
 { "EVIOCRMFF", 0x40044581 },
 { "EVIOCGRAB", 0x40044590 },
 { "EVIOCREVOKE", 0x40044591 },
@@ -930,6 +943,7 @@
 { "FBIPUT_VSYNC", 0x4004460a },
 { "FBIO_WAITFORVSYNC", 0x40044620 },
 { "SSTFB_SET_VGAPASS", 0x400446dd },
+{ "IOCTL_MEI_NOTIFY_SET", 0x40044802 },
 { "HIDIOCSFLAG", 0x4004480f },
 { "SNDRV_EMU10K1_IOCTL_TRAM_SETUP", 0x40044820 },
 { "SNDRV_DM_FM_IOCTL_SET_MODE", 0x40044825 },
@@ -993,8 +1007,10 @@
 { "TUNSETQUEUE", 0x400454d9 },
 { "TUNSETIFINDEX", 0x400454da },
 { "TUNSETVNETLE", 0x400454dc },
+{ "TUNSETVNETBE", 0x400454de },
 { "USBDEVFS_REAPURB32", 0x4004550c },
 { "USBDEVFS_REAPURBNDELAY32", 0x4004550d },
+{ "USBDEVFS_DROP_PRIVILEGES", 0x4004551e },
 { "SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE", 0x40045532 },
 { "SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE", 0x40045542 },
 { "UI_SET_EVBIT", 0x40045564 },
@@ -1061,8 +1077,8 @@
 { "LIRC_SET_WIDEBAND_RECEIVER", 0x40046923 },
 { "SPI_IOC_WR_MAX_SPEED_HZ", 0x40046b04 },
 { "SPI_IOC_WR_MODE32", 0x40046b05 },
-{ "MSMFB_GRP_DISP", 0x40046d01 },
-{ "MSMFB_BLIT", 0x40046d02 },
+{ "RIO_MPORT_MAINT_COMPTAG_SET", 0x40046d02 },
+{ "RIO_SET_EVENT_MASK", 0x40046d0d },
 { "NCP_IOC_SET_SIGN_WANTED", 0x40046e06 },
 { "NCP_IOC_GETDENTRYTTL", 0x40046e0c },
 { "SISFB_SET_AUTOMAXIMIZE_OLD", 0x40046efa },
@@ -1106,6 +1122,7 @@
 { "IXJCTL_INTERCOM_START", 0x400471fd },
 { "IXJCTL_INTERCOM_STOP", 0x400471fe },
 { "FAT_IOCTL_SET_ATTRIBUTES", 0x40047211 },
+{ "SCIF_LISTEN", 0x40047302 },
 { "PPPIOCATTCHAN", 0x40047438 },
 { "PPPIOCCONNECT", 0x4004743a },
 { "PPPIOCSMRRU", 0x4004743b },
@@ -1130,6 +1147,7 @@
 { "SIOCSNETADDR", 0x400489e0 },
 { "AUTOFS_IOC_EXPIRE_MULTI", 0x40049366 },
 { "BTRFS_IOC_CLONE", 0x40049409 },
+{ "FICLONE", 0x40049409 },
 { "BTRFS_IOC_BALANCE_CTL", 0x40049421 },
 { "KVM_INTERRUPT", 0x4004ae86 },
 { "KVM_SET_SIGNAL_MASK", 0x4004ae8b },
@@ -1148,6 +1166,7 @@
 { "FW_CDEV_IOC_RECEIVE_PHY_PACKETS", 0x40082316 },
 { "PERF_EVENT_IOC_PERIOD", 0x40082404 },
 { "PERF_EVENT_IOC_SET_FILTER", 0x40082406 },
+{ "STP_SET_OPTIONS", 0x40082502 },
 { "FBIO_RADEON_SET_MIRROR", 0x40084004 },
 { "AGPIOC_SETUP", 0x40084103 },
 { "AGPIOC_RESERVE", 0x40084104 },
@@ -1163,6 +1182,11 @@
 { "EVIOCSKEYCODE", 0x40084504 },
 { "SNDRV_SB_CSP_IOCTL_START", 0x40084813 },
 { "SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE", 0x40084842 },
+{ "AMDKFD_IOC_DESTROY_EVENT", 0x40084b09 },
+{ "AMDKFD_IOC_SET_EVENT", 0x40084b0a },
+{ "AMDKFD_IOC_RESET_EVENT", 0x40084b0b },
+{ "AMDKFD_IOC_DBG_REGISTER", 0x40084b0d },
+{ "AMDKFD_IOC_DBG_UNREGISTER", 0x40084b0e },
 { "MEMERASE", 0x40084d02 },
 { "MFB_SET_AOID", 0x40084d04 },
 { "MEMLOCK", 0x40084d05 },
@@ -1177,12 +1201,15 @@
 { "SNDCTL_SEQ_OUTOFBAND", 0x40085112 },
 { "RNDADDENTROPY", 0x40085203 },
 { "TFD_IOC_SET_TICKS", 0x40085400 },
+{ "NCIUARTSETDRIVER", 0x40085500 },
 { "USBDEVFS_REAPURB", 0x4008550c },
 { "USBDEVFS_REAPURBNDELAY", 0x4008550d },
 { "USBDEVFS_CONNECTINFO", 0x40085511 },
 { "UI_SET_PHYS", 0x4008556c },
 { "VIDIOC_S_STD", 0x40085618 },
+{ "VIDIOC_AM437X_CCDC_CFG", 0x400856c1 },
 { "VPFE_CMD_S_CCDC_RAW_PARAMS", 0x400856c1 },
+{ "DMA_BUF_IOCTL_SYNC", 0x40086200 },
 { "BINDER_SET_IDLE_TIMEOUT", 0x40086203 },
 { "CM_IOCSPTS", 0x40086302 },
 { "BC_FREE_BUFFER", 0x40086303 },
@@ -1204,6 +1231,7 @@
 { "DRM_IOCTL_RADEON_CP_STOP", 0x40086442 },
 { "DRM_IOCTL_SAVAGE_BCI_EVENT_WAIT", 0x40086443 },
 { "DRM_IOCTL_OMAP_GEM_CPU_PREP", 0x40086444 },
+{ "DRM_IOCTL_ETNAVIV_GEM_CPU_FINI", 0x40086445 },
 { "DRM_IOCTL_QXL_CLIENTCAP", 0x40086445 },
 { "DRM_IOCTL_I915_SETPARAM", 0x40086447 },
 { "DRM_IOCTL_I915_FREE", 0x40086449 },
@@ -1219,6 +1247,11 @@
 { "FS_IOC_SETFLAGS", 0x40086602 },
 { "HPET_IRQFREQ", 0x40086806 },
 { "MTIOCTOP", 0x40086d01 },
+{ "RIO_ENABLE_DOORBELL_RANGE", 0x40086d09 },
+{ "RIO_DISABLE_DOORBELL_RANGE", 0x40086d0a },
+{ "RIO_UNMAP_INBOUND", 0x40086d12 },
+{ "RIO_FREE_DMA", 0x40086d14 },
+{ "RIO_WAIT_FOR_ASYNC", 0x40086d16 },
 { "NCP_IOC_GETMOUNTUID2", 0x40086e02 },
 { "NILFS_IOCTL_DELETE_CHECKPOINT", 0x40086e81 },
 { "NILFS_IOCTL_RESIZE", 0x40086e8b },
@@ -1269,9 +1302,13 @@
 { "VHOST_SET_LOG_BASE", 0x4008af04 },
 { "VHOST_SET_VRING_NUM", 0x4008af10 },
 { "VHOST_SET_VRING_BASE", 0x4008af12 },
+{ "VHOST_SET_VRING_ENDIAN", 0x4008af13 },
+{ "VHOST_GET_VRING_ENDIAN", 0x4008af14 },
 { "VHOST_SET_VRING_KICK", 0x4008af20 },
 { "VHOST_SET_VRING_CALL", 0x4008af21 },
 { "VHOST_SET_VRING_ERR", 0x4008af22 },
+{ "VHOST_SET_VRING_BUSYLOOP_TIMEOUT", 0x4008af23 },
+{ "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", 0x4008af24 },
 { "VHOST_NET_SET_BACKEND", 0x4008af30 },
 { "PPPOEIOCSFWD", 0x4008b100 },
 { "IOW_WRITE", 0x4008c001 },
@@ -1299,6 +1336,7 @@
 { "DRM_IOCTL_RADEON_INIT_HEAP", 0x400c6455 },
 { "DRM_IOCTL_RADEON_SURF_ALLOC", 0x400c645a },
 { "DRM_IOCTL_I915_GEM_SET_DOMAIN", 0x400c645f },
+{ "FS_IOC_GET_ENCRYPTION_POLICY", 0x400c6615 },
 { "I2OEVTREG", 0x400c690a },
 { "HSC_SET_RX", 0x400c6b13 },
 { "HSC_GET_RX", 0x400c6b14 },
@@ -1311,7 +1349,11 @@
 { "FW_CDEV_IOC_SET_ISO_CHANNELS", 0x40102317 },
 { "PTP_EXTTS_REQUEST", 0x40103d02 },
 { "CCISS_SETNODENAME", 0x40104205 },
+{ "EVIOCSMASK", 0x40104593 },
 { "SNDRV_EMU10K1_IOCTL_TRAM_POKE", 0x40104821 },
+{ "SNDRV_USB_STREAM_IOCTL_SET_PARAMS", 0x40104890 },
+{ "AMDKFD_IOC_DBG_ADDRESS_WATCH", 0x40104b0f },
+{ "AMDKFD_IOC_DBG_WAVE_CONTROL", 0x40104b10 },
 { "MTRRIOC_ADD_ENTRY", 0x40104d00 },
 { "MTRRIOC_SET_ENTRY", 0x40104d01 },
 { "MTRRIOC_DEL_ENTRY", 0x40104d02 },
@@ -1326,7 +1368,6 @@
 { "OMAPFB_GET_COLOR_KEY", 0x40104f33 },
 { "TUNATTACHFILTER", 0x401054d5 },
 { "TUNDETACHFILTER", 0x401054d6 },
-{ "ANDROID_ALARM_SET_RTC", 0x40106105 },
 { "IDT77105_GETSTAT", 0x40106132 },
 { "IDT77105_GETSTATZ", 0x40106133 },
 { "ATM_GETSTAT", 0x40106150 },
@@ -1382,8 +1423,11 @@
 { "DRM_IOCTL_SIS_FB_INIT", 0x40106456 },
 { "DRM_IOCTL_RADEON_SETPARAM", 0x40106459 },
 { "TUNER_SET_CONFIG", 0x4010645c },
+{ "FS_IOC_GET_ENCRYPTION_PWSALT", 0x40106614 },
 { "HSC_SET_TX", 0x40106b15 },
 { "HSC_GET_TX", 0x40106b16 },
+{ "RIO_ENABLE_PORTWRITE_RANGE", 0x40106d0b },
+{ "RIO_DISABLE_PORTWRITE_RANGE", 0x40106d0c },
 { "MGSL_IOCSGPIO", 0x40106d10 },
 { "NILFS_IOCTL_CHANGE_CPMODE", 0x40106e80 },
 { "NILFS_IOCTL_SET_ALLOC_RANGE", 0x40106e8c },
@@ -1393,6 +1437,9 @@
 { "FE_SET_PROPERTY", 0x40106f52 },
 { "CA_SET_DESCR", 0x40106f86 },
 { "PPSETTIME", 0x40107096 },
+{ "IOC_PR_RESERVE", 0x401070c9 },
+{ "IOC_PR_RELEASE", 0x401070ca },
+{ "IOC_PR_CLEAR", 0x401070cd },
 { "PPPIOCSACTIVE", 0x40107446 },
 { "PPPIOCSPASS", 0x40107447 },
 { "PPPIOCSCOMPRESS", 0x4010744d },
@@ -1434,11 +1481,17 @@
 { "IVTVFB_IOC_DMA_FRAME", 0x401856c0 },
 { "DRM_IOCTL_UPDATE_DRAW", 0x4018643f },
 { "DRM_IOCTL_QXL_UPDATE_AREA", 0x40186443 },
+{ "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", 0x40186444 },
 { "DRM_IOCTL_MSM_GEM_CPU_PREP", 0x40186444 },
 { "DRM_IOCTL_MSM_WAIT_FENCE", 0x40186447 },
 { "DRM_IOCTL_R128_BLIT", 0x4018644b },
+{ "RIO_MPORT_MAINT_WRITE_LOCAL", 0x40186d06 },
+{ "RIO_MPORT_MAINT_WRITE_REMOTE", 0x40186d08 },
 { "NILFS_IOCTL_SET_SUINFO", 0x40186e8d },
 { "UBI_IOCATT", 0x40186f40 },
+{ "IOC_PR_REGISTER", 0x401870c8 },
+{ "IOC_PR_PREEMPT", 0x401870cb },
+{ "IOC_PR_PREEMPT_ABORT", 0x401870cc },
 { "BTRFS_IOC_QGROUP_ASSIGN", 0x40189429 },
 { "KVM_SET_MEMORY_REGION", 0x4018ae40 },
 { "KVM_S390_UCAS_MAP", 0x4018ae50 },
@@ -1447,10 +1500,13 @@
 { "KVM_GET_DEVICE_ATTR", 0x4018aee2 },
 { "KVM_HAS_DEVICE_ATTR", 0x4018aee3 },
 { "MBXFB_IOCS_ALPHA", 0x4018f402 },
+{ "UI_ABS_SETUP", 0x401c5504 },
+{ "FS_IOC_FSSETXATTR", 0x401c5820 },
 { "BR2684_SETFILT", 0x401c6190 },
 { "CHIOEXCHANGE", 0x401c6302 },
 { "FDSETPRM", 0x40200242 },
 { "FDDEFPRM", 0x40200243 },
+{ "CS_CONFIG_BUFS", 0x4020431f },
 { "ION_IOC_TEST_DMA_MAPPING", 0x402049f1 },
 { "ION_IOC_TEST_KERNEL_MAPPING", 0x402049f2 },
 { "AMDKFD_IOC_SET_MEMORY_POLICY", 0x40204b04 },
@@ -1459,26 +1515,38 @@
 { "DRM_IOCTL_MARK_BUFS", 0x40206417 },
 { "DRM_IOCTL_AGP_FREE", 0x40206435 },
 { "DRM_IOCTL_VIA_FREEMEM", 0x40206441 },
+{ "DRM_IOCTL_VIRTGPU_EXECBUFFER", 0x40206442 },
 { "DRM_IOCTL_I915_BATCHBUFFER", 0x40206443 },
+{ "DRM_IOCTL_AMDGPU_INFO", 0x40206445 },
 { "DRM_IOCTL_SIS_FB_FREE", 0x40206445 },
+{ "DRM_IOCTL_ETNAVIV_WAIT_FENCE", 0x40206447 },
 { "DRM_IOCTL_RADEON_CLEAR", 0x40206448 },
+{ "DRM_IOCTL_ETNAVIV_GEM_WAIT", 0x40206449 },
 { "DRM_IOCTL_I915_CMDBUFFER", 0x4020644b },
 { "DRM_IOCTL_I810_MC", 0x4020644c },
 { "DRM_IOCTL_RADEON_CMDBUF", 0x40206450 },
 { "DRM_IOCTL_SIS_AGP_FREE", 0x40206455 },
 { "DRM_IOCTL_I915_GEM_PREAD", 0x4020645c },
 { "DRM_IOCTL_I915_GEM_PWRITE", 0x4020645d },
+{ "RIO_DEV_ADD", 0x40206d17 },
+{ "RIO_DEV_DEL", 0x40206d18 },
 { "OSD_SEND_CMD", 0x40206fa0 },
 { "RTC_PLL_SET", 0x40207012 },
 { "PPPIOCSXASYNCMAP", 0x4020744f },
 { "BTRFS_IOC_CLONE_RANGE", 0x4020940d },
+{ "FICLONERANGE", 0x4020940d },
 { "KVM_SET_MEMORY_ALIAS", 0x4020ae43 },
 { "KVM_SET_USER_MEMORY_REGION", 0x4020ae46 },
 { "KVM_IRQFD", 0x4020ae76 },
 { "KVM_SIGNAL_MSI", 0x4020aea5 },
+{ "KVM_CREATE_SPAPR_TCE_64", 0x4020aea8 },
 { "KVM_PPC_GET_HTAB_FD", 0x4020aeaa },
 { "KVM_ARM_VCPU_INIT", 0x4020aeae },
+{ "KVM_S390_SET_IRQ_STATE", 0x4020aeb5 },
+{ "KVM_S390_GET_IRQ_STATE", 0x4020aeb6 },
 { "SNDRV_COMPRESS_SET_METADATA", 0x40244314 },
+{ "NVM_DEV_REMOVE", 0x40244c23 },
+{ "NVM_DEV_FACTORY", 0x40244c25 },
 { "JSIOCSCORR", 0x40246a21 },
 { "FE_SET_FRONTEND", 0x40246f4c },
 { "RTC_ALM_SET", 0x40247007 },
@@ -1489,12 +1557,15 @@
 { "EVIOCSKEYCODE_V2", 0x40284504 },
 { "SNDCTL_FM_LOAD_INSTR", 0x40285107 },
 { "DRM_IOCTL_RM_MAP", 0x4028641b },
+{ "DRM_IOCTL_AMDGPU_GEM_VA", 0x40286448 },
 { "DRM_IOCTL_R128_DEPTH", 0x4028644c },
 { "DRM_IOCTL_RADEON_VERTEX2", 0x4028644f },
 { "DRM_IOCTL_I915_GEM_EXECBUFFER", 0x40286454 },
+{ "RIO_UNMAP_OUTBOUND", 0x40286d10 },
 { "PHN_SETREGS", 0x40287008 },
 { "RTC_WKALM_SET", 0x4028700f },
 { "VHOST_SET_VRING_ADDR", 0x4028af11 },
+{ "NVM_DEV_INIT", 0x402c4c24 },
 { "SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", 0x402c5342 },
 { "TCSETS2", 0x402c542b },
 { "TCSETSW2", 0x402c542c },
@@ -1539,7 +1610,12 @@
 { "KVM_X86_SET_MCE", 0x4040ae9e },
 { "KVM_SET_VCPU_EVENTS", 0x4040aea0 },
 { "KVM_ASSIGN_SET_INTX_MASK", 0x4040aea4 },
+{ "KVM_S390_MEM_OP", 0x4040aeb1 },
+{ "KVM_S390_GET_SKEYS", 0x4040aeb2 },
+{ "KVM_S390_SET_SKEYS", 0x4040aeb3 },
 { "CXL_IOCTL_START_WORK", 0x4040ca00 },
+{ "CXL_IOCTL_DOWNLOAD_IMAGE", 0x4040ca0a },
+{ "CXL_IOCTL_VALIDATE_IMAGE", 0x4040ca0b },
 { "OMAPFB_SETUP_PLANE", 0x40444f34 },
 { "OMAPFB_QUERY_PLANE", 0x40444f35 },
 { "OMAPFB_UPDATE_WINDOW", 0x40444f36 },
@@ -1550,6 +1626,7 @@
 { "SNDRV_TIMER_IOCTL_GPARAMS", 0x40485404 },
 { "BTRFS_IOC_SEND", 0x40489426 },
 { "KVM_SET_GUEST_DEBUG", 0x4048ae9b },
+{ "KVM_S390_IRQ", 0x4048aeb4 },
 { "GSMIOC_SETCONF", 0x404c4701 },
 { "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", 0x404c534a },
 { "SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT", 0x40505330 },
@@ -1557,6 +1634,7 @@
 { "SNDRV_TIMER_IOCTL_PARAMS", 0x40505412 },
 { "VIDIOC_S_TUNER", 0x4054561e },
 { "SNDRV_SEQ_IOCTL_SET_CLIENT_POOL", 0x4058534c },
+{ "UI_DEV_SETUP", 0x405c5503 },
 { "PTP_PIN_SETFUNC", 0x40603d07 },
 { "SNDRV_HWDEP_IOCTL_DSP_LOAD", 0x40604803 },
 { "SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER", 0x40605346 },
@@ -1569,12 +1647,14 @@
 { "DRM_IOCTL_RADEON_CP_INIT", 0x40786440 },
 { "NILFS_IOCTL_CLEAN_SEGMENTS", 0x40786e88 },
 { "FDSETDRVPRM", 0x40800290 },
+{ "NVM_DEV_CREATE", 0x40804c22 },
 { "UBI_IOCVOLCRBLK", 0x40804f07 },
 { "DRM_IOCTL_MGA_INIT", 0x40806440 },
 { "KVM_PPC_GET_PVINFO", 0x4080aea1 },
 { "KVM_SET_DEBUGREGS", 0x4080aea2 },
 { "KVM_PPC_RTAS_DEFINE_TOKEN", 0x4080aeac },
 { "SNDRV_COMPRESS_SET_PARAMS", 0x40844312 },
+{ "V4L2_DEVICE_NOTIFY_EVENT", 0x40887602 },
 { "SNDRV_SEQ_IOCTL_DELETE_QUEUE", 0x408c5333 },
 { "VIDIOC_S_JPEGCOMP", 0x408c563e },
 { "KVM_SET_REGS", 0x4090ae82 },
@@ -1612,6 +1692,8 @@
 { "SNDRV_SB_CSP_IOCTL_LOAD_CODE", 0x70124811 },
 { "MFB_GET_ALPHA", 0x80014d00 },
 { "MFB_GET_GAMMA", 0x80014d01 },
+{ "USBTMC488_IOCTL_GET_CAPS", 0x80015b11 },
+{ "USBTMC488_IOCTL_READ_STB", 0x80015b12 },
 { "GADGET_GET_PRINTER_STATUS", 0x80016721 },
 { "JSIOCGAXES", 0x80016a11 },
 { "JSIOCGBUTTONS", 0x80016a12 },
@@ -1639,14 +1721,14 @@
 { "SONYPI_IOCGBAT2CAP", 0x80027604 },
 { "SONYPI_IOCGBAT2REM", 0x80027605 },
 { "MBXFB_IOCS_PLANEORDER", 0x8002f403 },
-{ "BLKI2OGRSTRAT", 0x80043201 },
-{ "BLKI2OGWSTRAT", 0x80043202 },
 { "SNDRV_PCM_IOCTL_PVERSION", 0x80044100 },
 { "CCISS_GETHEARTBEAT", 0x80044206 },
 { "CCISS_GETBUSTYPES", 0x80044207 },
 { "CCISS_GETFIRMVER", 0x80044208 },
 { "CCISS_GETDRIVVER", 0x80044209 },
 { "SNDRV_COMPRESS_IOCTL_VERSION", 0x80044300 },
+{ "CS_GET_STATE", 0x80044315 },
+{ "CS_GET_IF_VERSION", 0x8004431e },
 { "CAPI_GET_FLAGS", 0x80044323 },
 { "CAPI_SET_FLAGS", 0x80044324 },
 { "CAPI_CLR_FLAGS", 0x80044325 },
@@ -1662,6 +1744,7 @@
 { "SNDRV_HWDEP_IOCTL_PVERSION", 0x80044800 },
 { "HIDIOCGRDESCSIZE", 0x80044801 },
 { "HIDIOCGVERSION", 0x80044801 },
+{ "IOCTL_MEI_NOTIFY_GET", 0x80044803 },
 { "HIDIOCGFLAG", 0x8004480e },
 { "HDA_IOCTL_PVERSION", 0x80044810 },
 { "SNDRV_EMU10K1_IOCTL_PVERSION", 0x80044840 },
@@ -1722,6 +1805,7 @@
 { "TUNGETSNDBUF", 0x800454d3 },
 { "TUNGETVNETHDRSZ", 0x800454d7 },
 { "TUNGETVNETLE", 0x800454dd },
+{ "TUNGETVNETBE", 0x800454df },
 { "SNDRV_CTL_IOCTL_PVERSION", 0x80045500 },
 { "USBDEVFS_RESETEP", 0x80045503 },
 { "USBDEVFS_SETCONFIGURATION", 0x80045505 },
@@ -1785,6 +1869,8 @@
 { "SPI_IOC_RD_MAX_SPEED_HZ", 0x80046b04 },
 { "SPI_IOC_RD_MODE32", 0x80046b05 },
 { "UDF_GETEASIZE", 0x80046c40 },
+{ "RIO_MPORT_MAINT_PORT_IDX_GET", 0x80046d03 },
+{ "RIO_GET_EVENT_MASK", 0x80046d0e },
 { "NCP_IOC_SIGN_WANTED", 0x80046e06 },
 { "NCP_IOC_SETDENTRYTTL", 0x80046e0c },
 { "SISFB_GET_INFO_OLD", 0x80046ef8 },
@@ -1833,6 +1919,7 @@
 { "GENWQE_GET_CARD_STATE", 0x8004a524 },
 { "KVM_GET_MP_STATE", 0x8004ae98 },
 { "CXL_IOCTL_GET_PROCESS_ELEMENT", 0x8004ca01 },
+{ "FUSE_DEV_IOC_CLONE", 0x8004e500 },
 { "SISFB_GET_INFO_SIZE", 0x8004f300 },
 { "SISFB_GET_VBRSTATUS", 0x8004f302 },
 { "SISFB_GET_AUTOMAXIMIZE", 0x8004f303 },
@@ -1874,6 +1961,7 @@
 { "VIDIOC_G_STD", 0x80085617 },
 { "VIDIOC_QUERYSTD", 0x8008563f },
 { "CM_IOCGSTATUS", 0x80086300 },
+{ "KCOV_INIT_TRACE", 0x80086301 },
 { "DRM_IOCTL_I810_OV0INFO", 0x80086449 },
 { "FS_IOC_GETFLAGS", 0x80086601 },
 { "I2OPASSTHRU32", 0x8008690c },
@@ -1925,6 +2013,7 @@
 { "OMAPFB_GET_CAPS", 0x800c4f2a },
 { "SNDCTL_DSP_GETIPTR", 0x800c5011 },
 { "SNDCTL_DSP_GETOPTR", 0x800c5012 },
+{ "FS_IOC_SET_ENCRYPTION_POLICY", 0x800c6613 },
 { "IPMICTL_REGISTER_FOR_CMD_CHANS", 0x800c691c },
 { "IPMICTL_UNREGISTER_FOR_CMD_CHANS", 0x800c691d },
 { "NCP_IOC_SETROOT", 0x800c6e08 },
@@ -1933,7 +2022,9 @@
 { "CA_GET_SLOT_INFO", 0x800c6f82 },
 { "FDGETDRVTYP", 0x8010020f },
 { "FW_CDEV_IOC_GET_CYCLE_TIMER", 0x8010230c },
+{ "STP_POLICY_ID_GET", 0x80102501 },
 { "CCISS_GETNODENAME", 0x80104204 },
+{ "EVIOCGMASK", 0x80104592 },
 { "SNDRV_HDSPM_IOCTL_GET_LTC", 0x80104846 },
 { "ECCGETSTATS", 0x80104d12 },
 { "SNDCTL_DSP_GETOSPACE", 0x8010500c },
@@ -1960,6 +2051,8 @@
 { "GENWQE_READ_REG64", 0x8010a51e },
 { "GENWQE_READ_REG32", 0x8010a520 },
 { "GENWQE_READ_REG16", 0x8010a522 },
+{ "UFFDIO_UNREGISTER", 0x8010aa01 },
+{ "UFFDIO_WAKE", 0x8010aa02 },
 { "FDGETMAXERRS", 0x8014020e },
 { "GET_DISK_INFO", 0x80140912 },
 { "SNDRV_COMPRESS_TSTAMP", 0x80144320 },
@@ -1973,6 +2066,8 @@
 { "IMSETDEVNAME", 0x80184947 },
 { "OMAPFB_MEMORY_READ", 0x80184f3a },
 { "HPET_INFO", 0x80186803 },
+{ "RIO_MPORT_MAINT_READ_LOCAL", 0x80186d05 },
+{ "RIO_MPORT_MAINT_READ_REMOTE", 0x80186d07 },
 { "NCP_IOC_SIGN_INIT", 0x80186e05 },
 { "NCP_IOC_SETOBJECTNAME", 0x80186e09 },
 { "NILFS_IOCTL_GET_CPINFO", 0x80186e82 },
@@ -1983,6 +2078,7 @@
 { "MBXFB_IOCG_ALPHA", 0x8018f401 },
 { "SNDRV_COMPRESS_AVAIL", 0x801c4321 },
 { "HIDIOCGDEVINFO", 0x801c4803 },
+{ "FS_IOC_FSGETXATTR", 0x801c581f },
 { "FDGETPRM", 0x80200204 },
 { "FBIOGET_VBLANK", 0x80204612 },
 { "SNDRV_HDSPM_IOCTL_GET_STATUS", 0x80204847 },
@@ -2021,6 +2117,7 @@
 { "IPMICTL_SEND_COMMAND_SETTIME", 0x80306915 },
 { "MGSL_IOCGPARAMS", 0x80306d01 },
 { "MTIOCGET", 0x80306d02 },
+{ "RIO_MPORT_GET_PROPERTIES", 0x80306d04 },
 { "NILFS_IOCTL_GET_SUSTAT", 0x80306e85 },
 { "BTRFS_IOC_QGROUP_LIMIT", 0x8030942b },
 { "KVM_GET_CLOCK", 0x8030ae7c },
@@ -2037,6 +2134,8 @@
 { "BTRFS_IOC_QUOTA_RESCAN_STATUS", 0x8040942d },
 { "KVM_ASSIGN_PCI_DEVICE", 0x8040ae69 },
 { "KVM_GET_VCPU_EVENTS", 0x8040ae9f },
+{ "CXL_IOCTL_GET_AFU_ID", 0x8040ca02 },
+{ "GPIO_GET_CHIPINFO_IOCTL", 0x8044b401 },
 { "GET_ARRAY_INFO", 0x80480911 },
 { "PPPIOCGL2TPSTATS", 0x80487436 },
 { "BTRFS_IOC_GET_SUPPORTED_FEATURES", 0x80489439 },
@@ -2098,10 +2197,10 @@
 { "SNDCTL_COPR_RCVMSG", 0x8fa44309 },
 { "GET_BITMAP_FILE", 0x90000915 },
 { "SNDRV_HDSP_IOCTL_GET_MIXER", 0x90004844 },
+{ "NVM_GET_DEVICES", 0x90004c21 },
 { "BTRFS_IOC_DEVICES_READY", 0x90009427 },
 { "KVM_GET_XSAVE", 0x9000aea4 },
 { "HIDIOCGRDESC", 0x90044802 },
-{ "SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER", 0xc0005343 },
 { "GADGET_SET_PRINTER_STATUS", 0xc0016722 },
 { "CAPI_GET_MANUFACTURER", 0xc0044306 },
 { "CAPI_GET_SERIAL", 0xc0044308 },
@@ -2150,11 +2249,12 @@
 { "DRM_IOCTL_MGA_WAIT_FENCE", 0xc004644b },
 { "DRM_IOCTL_MODE_RMFB", 0xc00464af },
 { "DRM_IOCTL_MODE_DESTROY_DUMB", 0xc00464b4 },
+{ "DRM_IOCTL_MODE_DESTROYPROPBLOB", 0xc00464be },
 { "SNDCTL_MIDI_PRETIME", 0xc0046d00 },
 { "SNDCTL_MIDI_MPUMODE", 0xc0046d01 },
 { "MGSL_IOCWAITEVENT", 0xc0046d08 },
+{ "SCIF_FENCE_WAIT", 0xc0047310 },
 { "PPPIOCNEWUNIT", 0xc004743e },
-{ "TOSH_SMM", 0xc0047490 },
 { "MEYEIOC_SYNC", 0xc00476c3 },
 { "AUTOFS_IOC_SETTIMEOUT32", 0xc0049364 },
 { "KVM_GET_MSR_INDEX_LIST", 0xc004ae02 },
@@ -2169,6 +2269,9 @@
 { "ION_IOC_IMPORT", 0xc0084905 },
 { "ION_IOC_SYNC", 0xc0084907 },
 { "AMDKFD_IOC_DESTROY_QUEUE", 0xc0084b03 },
+{ "ND_IOCTL_DIMM_FLAGS", 0xc0084e03 },
+{ "ND_IOCTL_SET_CONFIG_DATA", 0xc0084e06 },
+{ "ND_IOCTL_VENDOR", 0xc0084e09 },
 { "SNDRV_CTL_IOCTL_TLV_READ", 0xc008551a },
 { "SNDRV_CTL_IOCTL_TLV_WRITE", 0xc008551b },
 { "SNDRV_CTL_IOCTL_TLV_COMMAND", 0xc008551c },
@@ -2182,13 +2285,14 @@
 { "DRM_IOCTL_RM_CTX", 0xc0086421 },
 { "DRM_IOCTL_GET_CTX", 0xc0086423 },
 { "DRM_IOCTL_QXL_ALLOC", 0xc0086440 },
-{ "DRM_IOCTL_TEGRA_GEM_MMAP", 0xc0086441 },
+{ "DRM_IOCTL_AMDGPU_GEM_MMAP", 0xc0086441 },
 { "DRM_IOCTL_SAVAGE_BCI_EVENT_EMIT", 0xc0086442 },
 { "DRM_IOCTL_TEGRA_SYNCPT_READ", 0xc0086442 },
 { "DRM_IOCTL_VIA_AGP_INIT", 0xc0086442 },
 { "DRM_IOCTL_TEGRA_SYNCPT_INCR", 0xc0086443 },
 { "DRM_IOCTL_VIA_FB_INIT", 0xc0086443 },
 { "DRM_IOCTL_I915_IRQ_EMIT", 0xc0086444 },
+{ "DRM_IOCTL_VIRTGPU_WAIT", 0xc0086448 },
 { "DRM_IOCTL_TEGRA_GEM_SET_FLAGS", 0xc008644c },
 { "DRM_IOCTL_TEGRA_GEM_GET_FLAGS", 0xc008644d },
 { "DRM_IOCTL_RADEON_IRQ_EMIT", 0xc0086456 },
@@ -2211,8 +2315,11 @@
 { "PPS_FETCH", 0xc00870a4 },
 { "PHONE_QUERY_CODEC", 0xc00871a7 },
 { "MIC_VIRTIO_ADD_DEVICE", 0xc0087301 },
+{ "SCIF_BIND", 0xc0087301 },
 { "MIC_VIRTIO_COPY_DESC", 0xc0087302 },
+{ "SCIF_CONNECT", 0xc0087303 },
 { "MIC_VIRTIO_CONFIG_CHANGE", 0xc0087305 },
+{ "SCIF_ACCEPTREG", 0xc0087305 },
 { "PPPIOCGNPMODE", 0xc008744c },
 { "AUTOFS_IOC_SETTIMEOUT", 0xc0089364 },
 { "KVM_GET_SUPPORTED_CPUID", 0xc008ae05 },
@@ -2225,7 +2332,11 @@
 { "FSL_HV_IOCTL_PARTITION_STOP", 0xc008af04 },
 { "FSL_HV_IOCTL_DOORBELL", 0xc008af06 },
 { "VHOST_GET_VRING_BASE", 0xc008af12 },
+{ "MMC_IOC_MULTI_CMD", 0xc008b301 },
 { "HIDIOCGREPORTINFO", 0xc00c4809 },
+{ "ND_IOCTL_SMART_THRESHOLD", 0xc00c4e02 },
+{ "ND_IOCTL_GET_CONFIG_SIZE", 0xc00c4e04 },
+{ "ND_IOCTL_GET_CONFIG_DATA", 0xc00c4e05 },
 { "SNDCTL_SYNTH_REMOVESAMPLE", 0xc00c5116 },
 { "USBDEVFS_IOCTL32", 0xc00c5512 },
 { "UI_BEGIN_FF_ERASE", 0xc00c55ca },
@@ -2240,6 +2351,7 @@
 { "KVM_CREATE_DEVICE", 0xc00caee0 },
 { "FSL_HV_IOCTL_PARTITION_GET_STATUS", 0xc00caf02 },
 { "MBXFB_IOCX_REG", 0xc00cf405 },
+{ "STP_POLICY_ID_SET", 0xc0102500 },
 { "CAPI_GET_VERSION", 0xc0104307 },
 { "CAPI_MANUFACTURER_CMD", 0xc0104320 },
 { "GIGASET_VERSION", 0xc0104703 },
@@ -2266,20 +2378,34 @@
 { "DRM_IOCTL_GET_SAREA_CTX", 0xc010641d },
 { "DRM_IOCTL_RES_CTX", 0xc0106426 },
 { "DRM_IOCTL_SG_ALLOC", 0xc0106438 },
+{ "DRM_IOCTL_ETNAVIV_GET_PARAM", 0xc0106440 },
 { "DRM_IOCTL_EXYNOS_GEM_CREATE", 0xc0106440 },
 { "DRM_IOCTL_MSM_GET_PARAM", 0xc0106440 },
 { "DRM_IOCTL_OMAP_GET_PARAM", 0xc0106440 },
 { "DRM_IOCTL_TEGRA_GEM_CREATE", 0xc0106440 },
+{ "DRM_IOCTL_EXYNOS_GEM_MAP", 0xc0106441 },
 { "DRM_IOCTL_QXL_MAP", 0xc0106441 },
+{ "DRM_IOCTL_TEGRA_GEM_MMAP", 0xc0106441 },
+{ "DRM_IOCTL_VC4_WAIT_SEQNO", 0xc0106441 },
+{ "DRM_IOCTL_VIRTGPU_MAP", 0xc0106441 },
+{ "DRM_IOCTL_AMDGPU_CTX", 0xc0106442 },
+{ "DRM_IOCTL_ETNAVIV_GEM_NEW", 0xc0106442 },
 { "DRM_IOCTL_MSM_GEM_NEW", 0xc0106442 },
+{ "DRM_IOCTL_VC4_WAIT_BO", 0xc0106442 },
+{ "DRM_IOCTL_ETNAVIV_GEM_INFO", 0xc0106443 },
 { "DRM_IOCTL_MSM_GEM_INFO", 0xc0106443 },
 { "DRM_IOCTL_OMAP_GEM_NEW", 0xc0106443 },
+{ "DRM_IOCTL_VC4_CREATE_BO", 0xc0106443 },
+{ "DRM_IOCTL_VIRTGPU_GETPARAM", 0xc0106443 },
 { "DRM_IOCTL_EXYNOS_GEM_GET", 0xc0106444 },
 { "DRM_IOCTL_QXL_GETPARAM", 0xc0106444 },
 { "DRM_IOCTL_TEGRA_SYNCPT_WAIT", 0xc0106444 },
+{ "DRM_IOCTL_VC4_MMAP_BO", 0xc0106444 },
 { "DRM_IOCTL_TEGRA_OPEN_CHANNEL", 0xc0106445 },
+{ "DRM_IOCTL_VIRTGPU_RESOURCE_INFO", 0xc0106445 },
 { "DRM_IOCTL_I915_GETPARAM", 0xc0106446 },
 { "DRM_IOCTL_TEGRA_CLOSE_CHANNEL", 0xc0106446 },
+{ "DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE", 0xc0106447 },
 { "DRM_IOCTL_EXYNOS_VIDI_CONNECTION", 0xc0106447 },
 { "DRM_IOCTL_TEGRA_GET_SYNCPT", 0xc0106447 },
 { "DRM_IOCTL_MGA_GETPARAM", 0xc0106449 },
@@ -2288,6 +2414,7 @@
 { "DRM_IOCTL_TEGRA_GEM_GET_TILING", 0xc010644b },
 { "DRM_IOCTL_RADEON_INDIRECT", 0xc010644d },
 { "DRM_IOCTL_R128_INDIRECT", 0xc010644f },
+{ "DRM_IOCTL_AMDGPU_GEM_OP", 0xc0106450 },
 { "DRM_IOCTL_RADEON_GETPARAM", 0xc0106451 },
 { "DRM_IOCTL_R128_GETPARAM", 0xc0106452 },
 { "DRM_IOCTL_SIS_AGP_INIT", 0xc0106453 },
@@ -2303,9 +2430,13 @@
 { "DRM_IOCTL_MODE_GETPROPBLOB", 0xc01064ac },
 { "DRM_IOCTL_MODE_MAP_DUMB", 0xc01064b3 },
 { "DRM_IOCTL_MODE_GETPLANERESOURCES", 0xc01064b5 },
+{ "DRM_IOCTL_MODE_CREATEPROPBLOB", 0xc01064bd },
 { "MGSL_IOCWAITGPIO", 0xc0106d12 },
 { "NCP_IOC_GETPRIVATEDATA", 0xc0106e0a },
 { "DMX_GET_STC", 0xc0106f32 },
+{ "SCIF_ACCEPTREQ", 0xc0107304 },
+{ "SCIF_UNREG", 0xc0107309 },
+{ "SCIF_FENCE_MARK", 0xc010730f },
 { "UVCIOC_CTRL_QUERY", 0xc0107521 },
 { "BTRFS_IOC_SPACE_INFO", 0xc0109414 },
 { "BTRFS_IOC_QUOTA_CTL", 0xc0109428 },
@@ -2317,7 +2448,7 @@
 { "SNDRV_TIMER_IOCTL_NEXT_DEVICE", 0xc0145401 },
 { "VIDIOC_REQBUFS", 0xc0145608 },
 { "VIDIOC_G_CROP", 0xc014563b },
-{ "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", 0xc014646b },
+{ "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", 0xc014646a },
 { "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", 0xc014646b },
 { "DRM_IOCTL_MODE_GETENCODER", 0xc01464a6 },
 { "FW_CDEV_IOC_ADD_DESCRIPTOR", 0xc0182306 },
@@ -2327,6 +2458,7 @@
 { "FW_CDEV_IOC_SEND_PHY_PACKET", 0xc0182315 },
 { "HIDIOCGUSAGE", 0xc018480b },
 { "HIDIOCGUCODE", 0xc018480d },
+{ "AMDKFD_IOC_WAIT_EVENTS", 0xc0184b0c },
 { "MTRRIOC_GET_ENTRY", 0xc0184d03 },
 { "MTRRIOC_GET_PAGE_ENTRY", 0xc0184d08 },
 { "MEMWRITEOOB64", 0xc0184d15 },
@@ -2337,11 +2469,17 @@
 { "FITRIM", 0xc0185879 },
 { "DRM_IOCTL_MAP_BUFS", 0xc0186419 },
 { "DRM_IOCTL_WAIT_VBLANK", 0xc018643a },
+{ "DRM_IOCTL_AMDGPU_BO_LIST", 0xc0186443 },
+{ "DRM_IOCTL_AMDGPU_CS", 0xc0186444 },
 { "DRM_IOCTL_I810_GETBUF", 0xc0186445 },
+{ "DRM_IOCTL_VC4_CREATE_SHADER_BO", 0xc0186445 },
 { "DRM_IOCTL_OMAP_GEM_INFO", 0xc0186446 },
 { "DRM_IOCTL_QXL_ALLOC_SURF", 0xc0186446 },
+{ "DRM_IOCTL_ETNAVIV_GEM_USERPTR", 0xc0186448 },
 { "DRM_IOCTL_I915_ALLOC", 0xc0186448 },
+{ "DRM_IOCTL_VIRTGPU_GET_CAPS", 0xc0186449 },
 { "DRM_IOCTL_VIA_WAIT_IRQ", 0xc018644d },
+{ "DRM_IOCTL_AMDGPU_GEM_USERPTR", 0xc0186451 },
 { "DRM_IOCTL_RADEON_ALLOC", 0xc0186453 },
 { "DRM_IOCTL_I915_GEM_PIN", 0xc0186455 },
 { "DRM_IOCTL_RADEON_GEM_INFO", 0xc018645c },
@@ -2349,14 +2487,23 @@
 { "DRM_IOCTL_RADEON_GEM_USERPTR", 0xc018646d },
 { "DRM_IOCTL_I915_GET_RESET_STATS", 0xc0186472 },
 { "DRM_IOCTL_I915_GEM_USERPTR", 0xc0186473 },
+{ "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM", 0xc0186474 },
+{ "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM", 0xc0186475 },
 { "DRM_IOCTL_MODE_PAGE_FLIP", 0xc01864b0 },
 { "DRM_IOCTL_MODE_DIRTYFB", 0xc01864b1 },
 { "DRM_IOCTL_MODE_OBJ_SETPROPERTY", 0xc01864ba },
 { "I2OHRTGET", 0xc0186901 },
 { "I2OLCTGET", 0xc0186902 },
+{ "RIO_ALLOC_DMA", 0xc0186d13 },
+{ "RIO_TRANSFER", 0xc0186d15 },
 { "NCP_IOC_GETOBJECTNAME", 0xc0186e09 },
 { "NILFS_IOCTL_GET_VINFO", 0xc0186e86 },
 { "NILFS_IOCTL_GET_BDESCS", 0xc0186e87 },
+{ "SCIF_SEND", 0xc0187306 },
+{ "SCIF_RECV", 0xc0187307 },
+{ "SCIF_GET_NODEIDS", 0xc018730e },
+{ "TOSH_SMM", 0xc0187490 },
+{ "TOSHIBA_ACPI_SCI", 0xc0187491 },
 { "AUTOFS_DEV_IOCTL_VERSION", 0xc0189371 },
 { "AUTOFS_DEV_IOCTL_PROTOVER", 0xc0189372 },
 { "AUTOFS_DEV_IOCTL_PROTOSUBVER", 0xc0189373 },
@@ -2372,6 +2519,8 @@
 { "AUTOFS_DEV_IOCTL_ASKUMOUNT", 0xc018937d },
 { "AUTOFS_DEV_IOCTL_ISMOUNTPOINT", 0xc018937e },
 { "BTRFS_IOC_FILE_EXTENT_SAME", 0xc0189436 },
+{ "FIDEDUPERANGE", 0xc0189436 },
+{ "UFFDIO_API", 0xc018aa3f },
 { "KVM_TRANSLATE", 0xc018ae85 },
 { "IB_USER_MAD_REGISTER_AGENT", 0xc01c1b01 },
 { "SI4713_IOC_MEASURE_RNL", 0xc01c56c0 },
@@ -2381,6 +2530,10 @@
 { "FW_CDEV_IOC_ALLOCATE", 0xc0202302 },
 { "FW_CDEV_IOC_CREATE_ISO_CONTEXT", 0xc0202308 },
 { "ION_IOC_ALLOC", 0xc0204900 },
+{ "AMDKFD_IOC_CREATE_EVENT", 0xc0204b08 },
+{ "ND_IOCTL_ARS_CAP", 0xc0204e01 },
+{ "ND_IOCTL_ARS_START", 0xc0204e02 },
+{ "ND_IOCTL_CLEAR_ERROR", 0xc0204e04 },
 { "VIDIOC_G_EXT_CTRLS", 0xc0205647 },
 { "VIDIOC_S_EXT_CTRLS", 0xc0205648 },
 { "VIDIOC_TRY_EXT_CTRLS", 0xc0205649 },
@@ -2389,15 +2542,16 @@
 { "X86_IOC_WRMSR_REGS", 0xc02063a1 },
 { "DRM_IOCTL_ADD_BUFS", 0xc0206416 },
 { "DRM_IOCTL_AGP_ALLOC", 0xc0206434 },
+{ "DRM_IOCTL_AMDGPU_GEM_CREATE", 0xc0206440 },
 { "DRM_IOCTL_VIA_ALLOCMEM", 0xc0206440 },
 { "DRM_IOCTL_SIS_FB_ALLOC", 0xc0206444 },
 { "DRM_IOCTL_MSM_GEM_SUBMIT", 0xc0206446 },
 { "DRM_IOCTL_VIA_DMA_INIT", 0xc0206447 },
+{ "DRM_IOCTL_AMDGPU_WAIT_CS", 0xc0206449 },
 { "DRM_IOCTL_MGA_DMA_BOOTSTRAP", 0xc020644c },
 { "DRM_IOCTL_RADEON_TEXTURE", 0xc020644e },
 { "DRM_IOCTL_SIS_AGP_ALLOC", 0xc0206454 },
 { "DRM_IOCTL_RADEON_GEM_CREATE", 0xc020645d },
-{ "DRM_IOCTL_I915_GEM_MMAP", 0xc020645e },
 { "DRM_IOCTL_RADEON_GEM_MMAP", 0xc020645e },
 { "DRM_IOCTL_RADEON_GEM_PREAD", 0xc0206461 },
 { "DRM_IOCTL_RADEON_GEM_PWRITE", 0xc0206462 },
@@ -2410,8 +2564,12 @@
 { "FS_IOC_FIEMAP", 0xc020660b },
 { "GENWQE_PIN_MEM", 0xc020a528 },
 { "GENWQE_UNPIN_MEM", 0xc020a529 },
+{ "UFFDIO_REGISTER", 0xc020aa00 },
+{ "UFFDIO_ZEROPAGE", 0xc020aa04 },
 { "SNDCTL_MIDI_MPUCMD", 0xc0216d02 },
 { "SNDRV_COMPRESS_GET_METADATA", 0xc0244315 },
+{ "DRM_IOCTL_VIRTGPU_TRANSFER_FROM_HOST", 0xc0246446 },
+{ "DRM_IOCTL_VIRTGPU_TRANSFER_TO_HOST", 0xc0246447 },
 { "DRM_IOCTL_MODE_CURSOR2", 0xc02464bb },
 { "IB_USER_MAD_REGISTER_AGENT2", 0xc0281b04 },
 { "FW_CDEV_IOC_GET_INFO", 0xc0282300 },
@@ -2430,14 +2588,24 @@
 { "DRM_IOCTL_GET_CLIENT", 0xc0286405 },
 { "DRM_IOCTL_ADD_MAP", 0xc0286415 },
 { "DRM_IOCTL_VIA_MAP_INIT", 0xc0286444 },
+{ "DRM_IOCTL_I915_GEM_MMAP", 0xc028645e },
 { "DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST", 0xc0286461 },
 { "DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF", 0xc0286472 },
 { "DRM_IOCTL_NOUVEAU_GEM_INFO", 0xc0286484 },
 { "I2OPARMSET", 0xc0286903 },
 { "I2OPARMGET", 0xc0286904 },
+{ "RIO_MAP_OUTBOUND", 0xc0286d0f },
+{ "RIO_MAP_INBOUND", 0xc0286d11 },
 { "NCP_IOC_GET_FS_INFO", 0xc0286e04 },
 { "PHN_GETREGS", 0xc0287007 },
+{ "SCIF_REG", 0xc0287308 },
+{ "SCIF_READFROM", 0xc028730a },
+{ "SCIF_WRITETO", 0xc028730b },
+{ "SCIF_VREADFROM", 0xc028730c },
+{ "SCIF_VWRITETO", 0xc028730d },
+{ "SCIF_FENCE_SIGNAL", 0xc0287311 },
 { "MEDIA_IOC_ENUM_LINKS", 0xc0287c02 },
+{ "UFFDIO_COPY", 0xc028aa03 },
 { "KVM_TPR_ACCESS_REPORTING", 0xc028ae92 },
 { "FSL_HV_IOCTL_MEMCPY", 0xc028af05 },
 { "FSL_HV_IOCTL_GETPROP", 0xc028af07 },
@@ -2450,6 +2618,7 @@
 { "VIDIOC_ENUM_FRAMESIZES", 0xc02c564a },
 { "DRM_IOCTL_I915_OVERLAY_ATTRS", 0xc02c6468 },
 { "MEMWRITE", 0xc0304d18 },
+{ "ND_IOCTL_ARS_STATUS", 0xc0304e03 },
 { "SNDRV_SEQ_IOCTL_SYSTEM_INFO", 0xc0305302 },
 { "VIDIOC_SUBDEV_ENUM_MBUS_CODE", 0xc0305602 },
 { "VIDIOC_SUBDEV_G_FRAME_INTERVAL", 0xc0305615 },
@@ -2457,6 +2626,7 @@
 { "VIDIOC_OMAP3ISP_HIST_CFG", 0xc03056c4 },
 { "SNDRV_RAWMIDI_IOCTL_PARAMS", 0xc0305710 },
 { "BINDER_WRITE_READ", 0xc0306201 },
+{ "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", 0xc0306446 },
 { "DRM_IOCTL_NOUVEAU_GEM_NEW", 0xc0306480 },
 { "DRM_IOCTL_MODE_SETPLANE", 0xc03064b7 },
 { "I2OSWDL", 0xc0306905 },
@@ -2477,10 +2647,13 @@
 { "VIDIOC_DBG_G_REGISTER", 0xc0385650 },
 { "VIDIOC_OMAP3ISP_CCDC_CFG", 0xc03856c1 },
 { "SNDRV_RAWMIDI_IOCTL_STATUS", 0xc0385720 },
+{ "DRM_IOCTL_VIRTGPU_RESOURCE_CREATE", 0xc0386444 },
+{ "DRM_IOCTL_MODE_ATOMIC", 0xc03864bc },
 { "BTRFS_IOC_INO_PATHS", 0xc0389423 },
 { "BTRFS_IOC_LOGICAL_INO", 0xc0389424 },
 { "GENWQE_SLU_UPDATE", 0xc038a550 },
 { "GENWQE_SLU_READ", 0xc038a551 },
+{ "PTP_SYS_OFFSET_PRECISE", 0xc0403d08 },
 { "CAPI_GET_PROFILE", 0xc0404309 },
 { "SNDRV_CTL_IOCTL_ELEM_REMOVE", 0xc0405519 },
 { "VIDIOC_ENUM_FMT", 0xc0405602 },
@@ -2499,7 +2672,6 @@
 { "DRM_IOCTL_MODE_GETPROPERTY", 0xc04064aa },
 { "VIDIOC_QUERYCTRL", 0xc0445624 },
 { "VIDIOC_G_MODULATOR", 0xc0445636 },
-{ "DRM_IOCTL_MODE_ADDFB2", 0xc04464b8 },
 { "BLKTRACESETUP", 0xc0481273 },
 { "SNDRV_EMU10K1_IOCTL_PCM_PEEK", 0xc0484831 },
 { "NVME_IOCTL_ADMIN_CMD", 0xc0484e41 },
@@ -2512,8 +2684,10 @@
 { "DRM_IOCTL_MODE_DETACHMODE", 0xc04864a9 },
 { "VIDEO_COMMAND", 0xc0486f3b },
 { "VIDEO_TRY_COMMAND", 0xc0486f3c },
+{ "MEDIA_IOC_G_TOPOLOGY", 0xc0487c04 },
 { "KVM_GET_PIT", 0xc048ae65 },
 { "MMC_IOC_CMD", 0xc048b300 },
+{ "GPIO_GET_LINEINFO_IOCTL", 0xc048b402 },
 { "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", 0xc04c5349 },
 { "VIDIOC_OMAP3ISP_AF_CFG", 0xc04c56c5 },
 { "SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION", 0xc0505350 },
@@ -2541,15 +2715,25 @@
 { "SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER", 0xc0605345 },
 { "DRM_IOCTL_EXYNOS_IPP_SET_PROPERTY", 0xc0606471 },
 { "UVCIOC_CTRL_MAP", 0xc0607520 },
+{ "DK_CXLFLASH_DETACH", 0xc060ca83 },
 { "FBIO_CURSOR", 0xc0684608 },
 { "UI_BEGIN_FF_UPLOAD", 0xc06855c8 },
 { "DRM_IOCTL_MODE_GETCRTC", 0xc06864a1 },
 { "DRM_IOCTL_MODE_SETCRTC", 0xc06864a2 },
+{ "DRM_IOCTL_MODE_ADDFB2", 0xc06864b8 },
+{ "DK_CXLFLASH_RELEASE", 0xc068ca82 },
+{ "DK_CXLFLASH_MANAGE_LUN", 0xc068ca86 },
 { "VIDIOC_OMAP3ISP_PRV_CFG", 0xc07056c2 },
 { "BTRFS_IOC_TREE_SEARCH_V2", 0xc0709411 },
+{ "DK_CXLFLASH_USER_DIRECT", 0xc070ca81 },
+{ "DK_CXLFLASH_VLUN_CLONE", 0xc070ca89 },
 { "SNDCTL_MIDI_INFO", 0xc074510c },
 { "VIDIOC_G_SLICED_VBI_CAP", 0xc0745645 },
+{ "DK_CXLFLASH_RECOVER_AFU", 0xc078ca85 },
+{ "DK_CXLFLASH_USER_VIRTUAL", 0xc078ca87 },
+{ "DK_CXLFLASH_VLUN_RESIZE", 0xc078ca88 },
 { "SOUND_MIXER_ACCESS", 0xc0804d66 },
+{ "ND_IOCTL_SMART", 0xc0844e01 },
 { "VIDIOC_SUBDEV_S_DV_TIMINGS", 0xc0845657 },
 { "VIDIOC_S_DV_TIMINGS", 0xc0845657 },
 { "VIDIOC_G_DV_TIMINGS", 0xc0845658 },
@@ -2565,8 +2749,13 @@
 { "SNDRV_SEQ_IOCTL_GET_NAMED_QUEUE", 0xc08c5336 },
 { "VIDIOC_DV_TIMINGS_CAP", 0xc0905664 },
 { "VIDIOC_SUBDEV_DV_TIMINGS_CAP", 0xc0905664 },
+{ "DK_CXLFLASH_ATTACH", 0xc090ca80 },
+{ "DK_CXLFLASH_VERIFY", 0xc090ca84 },
 { "VIDIOC_ENUM_DV_TIMINGS", 0xc0945662 },
 { "VIDIOC_SUBDEV_ENUM_DV_TIMINGS", 0xc0945662 },
+{ "SNDRV_PCM_IOCTL_STATUS_EXT", 0xc0984124 },
+{ "DRM_IOCTL_VC4_SUBMIT_CL", 0xc0a06440 },
+{ "DRM_IOCTL_VC4_GET_HANG_STATE", 0xc0a06446 },
 { "SOUND_MIXER_GETLEVELS", 0xc0a44d74 },
 { "SOUND_MIXER_SETLEVELS", 0xc0a44d75 },
 { "SNDRV_SEQ_IOCTL_CREATE_PORT", 0xc0a85320 },
@@ -2594,6 +2783,7 @@
 { "SNDRV_CTL_IOCTL_ELEM_ADD", 0xc1105517 },
 { "SNDRV_CTL_IOCTL_ELEM_REPLACE", 0xc1105518 },
 { "SNDRV_CTL_IOCTL_PCM_INFO", 0xc1205531 },
+{ "DRM_IOCTL_AMDGPU_GEM_METADATA", 0xc1206446 },
 { "DM_VERSION", 0xc138fd00 },
 { "DM_REMOVE_ALL", 0xc138fd01 },
 { "DM_LIST_DEVICES", 0xc138fd02 },
@@ -2625,6 +2815,7 @@
 { "SNDCTL_COPR_SENDMSG", 0xcfa44308 },
 { "SNDCTL_SYNTH_CONTROL", 0xcfa45115 },
 { "SNDCTL_COPR_LOAD", 0xcfb04301 },
+{ "NVM_INFO", 0xd0004c20 },
 { "BTRFS_IOC_TREE_SEARCH", 0xd0009411 },
 { "BTRFS_IOC_INO_LOOKUP", 0xd0009412 },
 { "BTRFS_IOC_DEV_INFO", 0xd000941e },
diff --git a/ioctlent1.h b/ioctlent1.h
index c39eb31..856d671 100644
--- a/ioctlent1.h
+++ b/ioctlent1.h
@@ -83,6 +83,7 @@
 { "STOP_ARRAY", 0x00000932 },
 { "STOP_ARRAY_RO", 0x00000933 },
 { "RESTART_ARRAY_RW", 0x00000934 },
+{ "CLUSTERED_DISK_NACK", 0x00000935 },
 { "BLKROSET", 0x0000125d },
 { "BLKROGET", 0x0000125e },
 { "BLKRRPART", 0x0000125f },
@@ -108,6 +109,7 @@
 { "BLKSECDISCARD", 0x0000127d },
 { "BLKROTATIONAL", 0x0000127e },
 { "BLKZEROOUT", 0x0000127f },
+{ "BLKDAXGET", 0x00001281 },
 { "IB_USER_MAD_ENABLE_PKEY", 0x00001b03 },
 { "SG_SET_TIMEOUT", 0x00002201 },
 { "SG_GET_TIMEOUT", 0x00002202 },
@@ -169,6 +171,10 @@
 { "VFIO_IOMMU_UNMAP_DMA", 0x00003b72 },
 { "VFIO_IOMMU_ENABLE", 0x00003b73 },
 { "VFIO_IOMMU_DISABLE", 0x00003b74 },
+{ "VFIO_IOMMU_SPAPR_REGISTER_MEMORY", 0x00003b75 },
+{ "VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY", 0x00003b76 },
+{ "VFIO_IOMMU_SPAPR_TCE_CREATE", 0x00003b77 },
+{ "VFIO_IOMMU_SPAPR_TCE_REMOVE", 0x00003b78 },
 { "VFIO_EEH_PE_OP", 0x00003b79 },
 { "AGPIOC_ACQUIRE", 0x00004101 },
 { "APM_IOC_STANDBY", 0x00004101 },
@@ -317,11 +323,14 @@
 { "LOOP_GET_STATUS64", 0x00004c05 },
 { "LOOP_CHANGE_FD", 0x00004c06 },
 { "LOOP_SET_CAPACITY", 0x00004c07 },
+{ "LOOP_SET_DIRECT_IO", 0x00004c08 },
 { "LOOP_CTL_ADD", 0x00004c80 },
 { "LOOP_CTL_REMOVE", 0x00004c81 },
 { "LOOP_CTL_GET_FREE", 0x00004c82 },
 { "MTDFILEMODE", 0x00004d13 },
 { "NVME_IOCTL_ID", 0x00004e40 },
+{ "NVME_IOCTL_RESET", 0x00004e44 },
+{ "NVME_IOCTL_SUBSYS_RESET", 0x00004e45 },
 { "UBI_IOCVOLRMBLK", 0x00004f08 },
 { "OMAPFB_SYNC_GFX", 0x00004f25 },
 { "OMAPFB_VSYNC", 0x00004f26 },
@@ -490,7 +499,8 @@
 { "USBTMC_IOCTL_ABORT_BULK_IN", 0x00005b04 },
 { "USBTMC_IOCTL_CLEAR_OUT_HALT", 0x00005b06 },
 { "USBTMC_IOCTL_CLEAR_IN_HALT", 0x00005b07 },
-{ "ANDROID_ALARM_WAIT", 0x00006101 },
+{ "USBTMC488_IOCTL_GOTO_LOCAL", 0x00005b14 },
+{ "USBTMC488_IOCTL_LOCAL_LOCKOUT", 0x00005b15 },
 { "NS_ADJBUFLEV", 0x00006163 },
 { "SIOCSIFATMTCP", 0x00006180 },
 { "ATMTCP_CREATE", 0x0000618e },
@@ -514,6 +524,8 @@
 { "BC_ENTER_LOOPER", 0x0000630c },
 { "BC_EXIT_LOOPER", 0x0000630d },
 { "CHIOINITELEM", 0x00006311 },
+{ "KCOV_ENABLE", 0x00006364 },
+{ "KCOV_DISABLE", 0x00006365 },
 { "DRM_IOCTL_SET_MASTER", 0x0000641e },
 { "DRM_IOCTL_DROP_MASTER", 0x0000641f },
 { "DRM_IOCTL_AGP_ACQUIRE", 0x00006430 },
@@ -846,15 +858,9 @@
 { "RAW_GETBIND", 0x0000ac01 },
 { "KVM_GET_API_VERSION", 0x0000ae00 },
 { "KVM_CREATE_VM", 0x0000ae01 },
-{ "LOGGER_GET_LOG_BUF_SIZE", 0x0000ae01 },
-{ "LOGGER_GET_LOG_LEN", 0x0000ae02 },
 { "KVM_CHECK_EXTENSION", 0x0000ae03 },
-{ "LOGGER_GET_NEXT_ENTRY_LEN", 0x0000ae03 },
 { "KVM_GET_VCPU_MMAP_SIZE", 0x0000ae04 },
-{ "LOGGER_FLUSH_LOG", 0x0000ae04 },
-{ "LOGGER_GET_VERSION", 0x0000ae05 },
 { "KVM_S390_ENABLE_SIE", 0x0000ae06 },
-{ "LOGGER_SET_VERSION", 0x0000ae06 },
 { "KVM_CREATE_VCPU", 0x0000ae41 },
 { "KVM_SET_NR_MMU_PAGES", 0x0000ae44 },
 { "KVM_GET_NR_MMU_PAGES", 0x0000ae45 },
@@ -869,6 +875,7 @@
 { "KVM_SET_TSC_KHZ", 0x0000aea2 },
 { "KVM_GET_TSC_KHZ", 0x0000aea3 },
 { "KVM_KVMCLOCK_CTRL", 0x0000aead },
+{ "KVM_SMI", 0x0000aeb7 },
 { "VHOST_SET_OWNER", 0x0000af01 },
 { "VHOST_RESET_OWNER", 0x0000af02 },
 { "PPPOEIOCDFWD", 0x0000b101 },
@@ -876,11 +883,17 @@
 { "IOCTL_EVTCHN_BIND_UNBOUND_PORT", 0x00044502 },
 { "IOCTL_EVTCHN_UNBIND", 0x00044503 },
 { "IOCTL_EVTCHN_NOTIFY", 0x00044504 },
+{ "IOCTL_GNTDEV_SET_MAX_GRANTS", 0x00044703 },
 { "IOCTL_EVTCHN_BIND_INTERDOMAIN", 0x00084501 },
-{ "SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER", 0x40005344 },
+{ "IOCTL_GNTDEV_GRANT_COPY", 0x00084708 },
+{ "IOCTL_GNTDEV_UNMAP_GRANT_REF", 0x00104701 },
+{ "IOCTL_GNTDEV_SET_UNMAP_NOTIFY", 0x00104707 },
+{ "IOCTL_GNTDEV_MAP_GRANT_REF", 0x00184700 },
+{ "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", 0x00184702 },
 { "MFB_SET_ALPHA", 0x40014d00 },
 { "MFB_SET_GAMMA", 0x40014d01 },
 { "MFB_SET_BRIGHTNESS", 0x40014d03 },
+{ "USBTMC488_IOCTL_REN_CONTROL", 0x40015b13 },
 { "SPI_IOC_WR_MODE", 0x40016b01 },
 { "SPI_IOC_WR_LSB_FIRST", 0x40016b02 },
 { "SPI_IOC_WR_BITS_PER_WORD", 0x40016b03 },
@@ -894,6 +907,7 @@
 { "SONYPI_IOCSFAN", 0x4001760b },
 { "ATM_SETBACKEND", 0x400261f2 },
 { "ATM_NEWBACKENDIF", 0x400261f3 },
+{ "RIO_MPORT_MAINT_HDID_SET", 0x40026d01 },
 { "NCP_IOC_GETMOUNTUID", 0x40026e02 },
 { "AUDIO_SET_ATTRIBUTES", 0x40026f11 },
 { "DMX_ADD_PID", 0x40026f33 },
@@ -910,11 +924,9 @@
 { "FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE", 0x4004230e },
 { "FW_CDEV_IOC_FLUSH_ISO", 0x40042318 },
 { "PERF_EVENT_IOC_SET_FILTER", 0x40042406 },
-{ "BLKI2OSRSTRAT", 0x40043203 },
-{ "BLKI2OSWSTRAT", 0x40043204 },
+{ "PERF_EVENT_IOC_SET_BPF", 0x40042408 },
 { "SNAPSHOT_CREATE_IMAGE", 0x40043311 },
 { "PTP_ENABLE_PPS", 0x40043d04 },
-{ "SYNC_IOC_WAIT", 0x40043e00 },
 { "FBIO_RADEON_SET_MIRROR", 0x40044004 },
 { "SNDRV_PCM_IOCTL_TSTAMP", 0x40044102 },
 { "AGPIOC_SETUP", 0x40044103 },
@@ -930,6 +942,7 @@
 { "SNDRV_PCM_IOCTL_LINK", 0x40044160 },
 { "PMU_IOC_SET_BACKLIGHT", 0x40044202 },
 { "CCISS_REGNEWDISK", 0x4004420d },
+{ "CS_SET_WAKELINE", 0x40044317 },
 { "EVIOCRMFF", 0x40044581 },
 { "EVIOCGRAB", 0x40044590 },
 { "EVIOCREVOKE", 0x40044591 },
@@ -941,6 +954,7 @@
 { "FBIPUT_VSYNC", 0x4004460a },
 { "FBIO_WAITFORVSYNC", 0x40044620 },
 { "SSTFB_SET_VGAPASS", 0x400446dd },
+{ "IOCTL_MEI_NOTIFY_SET", 0x40044802 },
 { "HIDIOCSFLAG", 0x4004480f },
 { "SNDRV_EMU10K1_IOCTL_TRAM_SETUP", 0x40044820 },
 { "SNDRV_DM_FM_IOCTL_SET_MODE", 0x40044825 },
@@ -1005,8 +1019,11 @@
 { "TUNSETQUEUE", 0x400454d9 },
 { "TUNSETIFINDEX", 0x400454da },
 { "TUNSETVNETLE", 0x400454dc },
+{ "TUNSETVNETBE", 0x400454de },
+{ "NCIUARTSETDRIVER", 0x40045500 },
 { "USBDEVFS_REAPURB", 0x4004550c },
 { "USBDEVFS_REAPURBNDELAY", 0x4004550d },
+{ "USBDEVFS_DROP_PRIVILEGES", 0x4004551e },
 { "SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE", 0x40045532 },
 { "SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE", 0x40045542 },
 { "UI_SET_EVBIT", 0x40045564 },
@@ -1025,6 +1042,7 @@
 { "VIDIOC_STREAMOFF", 0x40045613 },
 { "VIDIOC_S_PRIORITY", 0x40045644 },
 { "IVTV_IOC_PASSTHROUGH_MODE", 0x400456c1 },
+{ "VIDIOC_AM437X_CCDC_CFG", 0x400456c1 },
 { "VPFE_CMD_S_CCDC_RAW_PARAMS", 0x400456c1 },
 { "SW_SYNC_IOC_INC", 0x40045701 },
 { "SNDRV_RAWMIDI_IOCTL_DROP", 0x40045730 },
@@ -1082,8 +1100,8 @@
 { "LIRC_SET_WIDEBAND_RECEIVER", 0x40046923 },
 { "SPI_IOC_WR_MAX_SPEED_HZ", 0x40046b04 },
 { "SPI_IOC_WR_MODE32", 0x40046b05 },
-{ "MSMFB_GRP_DISP", 0x40046d01 },
-{ "MSMFB_BLIT", 0x40046d02 },
+{ "RIO_MPORT_MAINT_COMPTAG_SET", 0x40046d02 },
+{ "RIO_SET_EVENT_MASK", 0x40046d0d },
 { "NCP_IOC_GETMOUNTUID2", 0x40046e02 },
 { "NCP_IOC_SET_SIGN_WANTED", 0x40046e06 },
 { "NCP_IOC_GETDENTRYTTL", 0x40046e0c },
@@ -1146,6 +1164,7 @@
 { "IXJCTL_INTERCOM_START", 0x400471fd },
 { "IXJCTL_INTERCOM_STOP", 0x400471fe },
 { "FAT_IOCTL_SET_ATTRIBUTES", 0x40047211 },
+{ "SCIF_LISTEN", 0x40047302 },
 { "PPPIOCATTCHAN", 0x40047438 },
 { "PPPIOCCONNECT", 0x4004743a },
 { "PPPIOCSMRRU", 0x4004743b },
@@ -1173,6 +1192,7 @@
 { "SIOCSNETADDR", 0x400489e0 },
 { "AUTOFS_IOC_EXPIRE_MULTI", 0x40049366 },
 { "BTRFS_IOC_CLONE", 0x40049409 },
+{ "FICLONE", 0x40049409 },
 { "BTRFS_IOC_BALANCE_CTL", 0x40049421 },
 { "KVM_S390_VCPU_FAULT", 0x4004ae52 },
 { "KVM_INTERRUPT", 0x4004ae86 },
@@ -1195,11 +1215,17 @@
 { "FE_DISEQC_SEND_MASTER_CMD", 0x40076f3f },
 { "FW_CDEV_IOC_RECEIVE_PHY_PACKETS", 0x40082316 },
 { "PERF_EVENT_IOC_PERIOD", 0x40082404 },
+{ "STP_SET_OPTIONS", 0x40082502 },
 { "CCISS_SETINTINFO", 0x40084203 },
 { "APEI_ERST_CLEAR_RECORD", 0x40084501 },
 { "EVIOCSREP", 0x40084503 },
 { "EVIOCSKEYCODE", 0x40084504 },
 { "SNDRV_SB_CSP_IOCTL_START", 0x40084813 },
+{ "AMDKFD_IOC_DESTROY_EVENT", 0x40084b09 },
+{ "AMDKFD_IOC_SET_EVENT", 0x40084b0a },
+{ "AMDKFD_IOC_RESET_EVENT", 0x40084b0b },
+{ "AMDKFD_IOC_DBG_REGISTER", 0x40084b0d },
+{ "AMDKFD_IOC_DBG_UNREGISTER", 0x40084b0e },
 { "MEMERASE", 0x40084d02 },
 { "MFB_SET_AOID", 0x40084d04 },
 { "MEMLOCK", 0x40084d05 },
@@ -1218,9 +1244,9 @@
 { "TUNDETACHFILTER", 0x400854d6 },
 { "USBDEVFS_CONNECTINFO", 0x40085511 },
 { "VIDIOC_S_STD", 0x40085618 },
-{ "ANDROID_ALARM_SET_RTC", 0x40086105 },
 { "ATM_GETNAMES", 0x40086183 },
 { "ATM_ADDPARTY", 0x400861f4 },
+{ "DMA_BUF_IOCTL_SYNC", 0x40086200 },
 { "BINDER_SET_IDLE_TIMEOUT", 0x40086203 },
 { "BC_FREE_BUFFER", 0x40086303 },
 { "CHIOGSTATUS", 0x40086308 },
@@ -1246,6 +1272,7 @@
 { "DRM_IOCTL_RADEON_CP_STOP", 0x40086442 },
 { "DRM_IOCTL_SAVAGE_BCI_EVENT_WAIT", 0x40086443 },
 { "DRM_IOCTL_OMAP_GEM_CPU_PREP", 0x40086444 },
+{ "DRM_IOCTL_ETNAVIV_GEM_CPU_FINI", 0x40086445 },
 { "DRM_IOCTL_QXL_CLIENTCAP", 0x40086445 },
 { "DRM_IOCTL_I915_SETPARAM", 0x40086447 },
 { "DRM_IOCTL_VIA_CMDBUFFER", 0x40086448 },
@@ -1261,6 +1288,11 @@
 { "DRM_IOCTL_I915_GEM_SET_CACHING", 0x4008646f },
 { "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", 0x40086482 },
 { "MTIOCTOP", 0x40086d01 },
+{ "RIO_ENABLE_DOORBELL_RANGE", 0x40086d09 },
+{ "RIO_DISABLE_DOORBELL_RANGE", 0x40086d0a },
+{ "RIO_UNMAP_INBOUND", 0x40086d12 },
+{ "RIO_FREE_DMA", 0x40086d14 },
+{ "RIO_WAIT_FOR_ASYNC", 0x40086d16 },
 { "NILFS_IOCTL_DELETE_CHECKPOINT", 0x40086e81 },
 { "NILFS_IOCTL_RESIZE", 0x40086e8b },
 { "AUDIO_SET_MIXER", 0x40086f0e },
@@ -1293,9 +1325,13 @@
 { "VHOST_SET_LOG_BASE", 0x4008af04 },
 { "VHOST_SET_VRING_NUM", 0x4008af10 },
 { "VHOST_SET_VRING_BASE", 0x4008af12 },
+{ "VHOST_SET_VRING_ENDIAN", 0x4008af13 },
+{ "VHOST_GET_VRING_ENDIAN", 0x4008af14 },
 { "VHOST_SET_VRING_KICK", 0x4008af20 },
 { "VHOST_SET_VRING_CALL", 0x4008af21 },
 { "VHOST_SET_VRING_ERR", 0x4008af22 },
+{ "VHOST_SET_VRING_BUSYLOOP_TIMEOUT", 0x4008af23 },
+{ "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", 0x4008af24 },
 { "VHOST_NET_SET_BACKEND", 0x4008af30 },
 { "SNDRV_DM_FM_IOCTL_SET_PARAMS", 0x40094824 },
 { "FDFMTTRK", 0x400c0248 },
@@ -1362,6 +1398,7 @@
 { "DRM_IOCTL_RADEON_SETPARAM", 0x400c6459 },
 { "DRM_IOCTL_RADEON_SURF_ALLOC", 0x400c645a },
 { "DRM_IOCTL_I915_GEM_SET_DOMAIN", 0x400c645f },
+{ "FS_IOC_GET_ENCRYPTION_POLICY", 0x400c6615 },
 { "I2OEVTREG", 0x400c690a },
 { "HSC_SET_RX", 0x400c6b13 },
 { "HSC_GET_RX", 0x400c6b14 },
@@ -1375,6 +1412,10 @@
 { "FW_CDEV_IOC_START_ISO", 0x4010230a },
 { "PTP_EXTTS_REQUEST", 0x40103d02 },
 { "CCISS_SETNODENAME", 0x40104205 },
+{ "EVIOCSMASK", 0x40104593 },
+{ "SNDRV_USB_STREAM_IOCTL_SET_PARAMS", 0x40104890 },
+{ "AMDKFD_IOC_DBG_ADDRESS_WATCH", 0x40104b0f },
+{ "AMDKFD_IOC_DBG_WAVE_CONTROL", 0x40104b10 },
 { "MEMERASE64", 0x40104d14 },
 { "UBI_IOCSETVOLPROP", 0x40104f06 },
 { "OMAPFB_SET_COLOR_KEY", 0x40104f32 },
@@ -1395,13 +1436,19 @@
 { "DRM_IOCTL_I915_HWS_ADDR", 0x40106451 },
 { "DRM_IOCTL_I915_GEM_INIT", 0x40106453 },
 { "DRM_IOCTL_SIS_AGP_FREE", 0x40106455 },
+{ "FS_IOC_GET_ENCRYPTION_PWSALT", 0x40106614 },
 { "HSC_SET_TX", 0x40106b15 },
 { "HSC_GET_TX", 0x40106b16 },
+{ "RIO_ENABLE_PORTWRITE_RANGE", 0x40106d0b },
+{ "RIO_DISABLE_PORTWRITE_RANGE", 0x40106d0c },
 { "MGSL_IOCSGPIO", 0x40106d10 },
 { "NILFS_IOCTL_CHANGE_CPMODE", 0x40106e80 },
 { "NILFS_IOCTL_SET_ALLOC_RANGE", 0x40106e8c },
 { "VIDEO_SET_HIGHLIGHT", 0x40106f27 },
 { "CA_SET_DESCR", 0x40106f86 },
+{ "IOC_PR_RESERVE", 0x401070c9 },
+{ "IOC_PR_RELEASE", 0x401070ca },
+{ "IOC_PR_CLEAR", 0x401070cd },
 { "BTRFS_IOC_QGROUP_CREATE", 0x4010942a },
 { "GENWQE_WRITE_REG64", 0x4010a51f },
 { "GENWQE_WRITE_REG32", 0x4010a521 },
@@ -1441,6 +1488,7 @@
 { "DRM_IOCTL_RM_MAP", 0x4018641b },
 { "DRM_IOCTL_I915_BATCHBUFFER", 0x40186443 },
 { "DRM_IOCTL_QXL_UPDATE_AREA", 0x40186443 },
+{ "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", 0x40186444 },
 { "DRM_IOCTL_MSM_GEM_CPU_PREP", 0x40186444 },
 { "DRM_IOCTL_MSM_WAIT_FENCE", 0x40186447 },
 { "DRM_IOCTL_RADEON_CLEAR", 0x40186448 },
@@ -1448,8 +1496,13 @@
 { "DRM_IOCTL_R128_BLIT", 0x4018644b },
 { "DRM_IOCTL_R128_DEPTH", 0x4018644c },
 { "DRM_IOCTL_RADEON_VERTEX2", 0x4018644f },
+{ "RIO_MPORT_MAINT_WRITE_LOCAL", 0x40186d06 },
+{ "RIO_MPORT_MAINT_WRITE_REMOTE", 0x40186d08 },
 { "NILFS_IOCTL_SET_SUINFO", 0x40186e8d },
 { "UBI_IOCATT", 0x40186f40 },
+{ "IOC_PR_REGISTER", 0x401870c8 },
+{ "IOC_PR_PREEMPT", 0x401870cb },
+{ "IOC_PR_PREEMPT_ABORT", 0x401870cc },
 { "BTRFS_IOC_QGROUP_ASSIGN", 0x40189429 },
 { "KVM_SET_MEMORY_REGION", 0x4018ae40 },
 { "KVM_S390_UCAS_MAP", 0x4018ae50 },
@@ -1460,29 +1513,44 @@
 { "MBXFB_IOCS_ALPHA", 0x4018f402 },
 { "FDSETPRM", 0x401c0242 },
 { "FDDEFPRM", 0x401c0243 },
+{ "UI_ABS_SETUP", 0x401c5504 },
+{ "FS_IOC_FSSETXATTR", 0x401c5820 },
 { "BR2684_SETFILT", 0x401c6190 },
 { "CHIOEXCHANGE", 0x401c6302 },
 { "OSD_SEND_CMD", 0x401c6fa0 },
 { "RTC_PLL_SET", 0x401c7012 },
+{ "CS_CONFIG_BUFS", 0x4020431f },
 { "ION_IOC_TEST_DMA_MAPPING", 0x402049f1 },
 { "ION_IOC_TEST_KERNEL_MAPPING", 0x402049f2 },
 { "AMDKFD_IOC_SET_MEMORY_POLICY", 0x40204b04 },
 { "VIDIOC_SUBSCRIBE_EVENT", 0x4020565a },
 { "VIDIOC_UNSUBSCRIBE_EVENT", 0x4020565b },
+{ "DRM_IOCTL_VIRTGPU_EXECBUFFER", 0x40206442 },
+{ "DRM_IOCTL_AMDGPU_INFO", 0x40206445 },
+{ "DRM_IOCTL_ETNAVIV_WAIT_FENCE", 0x40206447 },
+{ "DRM_IOCTL_ETNAVIV_GEM_WAIT", 0x40206449 },
 { "DRM_IOCTL_I915_GEM_PREAD", 0x4020645c },
 { "DRM_IOCTL_I915_GEM_PWRITE", 0x4020645d },
 { "MGSL_IOCSPARAMS", 0x40206d00 },
+{ "RIO_DEV_ADD", 0x40206d17 },
+{ "RIO_DEV_DEL", 0x40206d18 },
 { "PPPIOCSXASYNCMAP", 0x4020744f },
 { "BTRFS_IOC_CLONE_RANGE", 0x4020940d },
+{ "FICLONERANGE", 0x4020940d },
 { "KVM_SET_MEMORY_ALIAS", 0x4020ae43 },
 { "KVM_SET_USER_MEMORY_REGION", 0x4020ae46 },
 { "KVM_IRQFD", 0x4020ae76 },
 { "KVM_SIGNAL_MSI", 0x4020aea5 },
+{ "KVM_CREATE_SPAPR_TCE_64", 0x4020aea8 },
 { "KVM_PPC_GET_HTAB_FD", 0x4020aeaa },
 { "KVM_ARM_VCPU_INIT", 0x4020aeae },
+{ "KVM_S390_SET_IRQ_STATE", 0x4020aeb5 },
+{ "KVM_S390_GET_IRQ_STATE", 0x4020aeb6 },
 { "FW_CDEV_IOC_SEND_REQUEST", 0x40242301 },
 { "FW_CDEV_IOC_SEND_BROADCAST_REQUEST", 0x40242312 },
 { "SNDRV_COMPRESS_SET_METADATA", 0x40244314 },
+{ "NVM_DEV_REMOVE", 0x40244c23 },
+{ "NVM_DEV_FACTORY", 0x40244c25 },
 { "DRM_IOCTL_SAVAGE_BCI_CMDBUF", 0x40246441 },
 { "JSIOCSCORR", 0x40246a21 },
 { "FE_SET_FRONTEND", 0x40246f4c },
@@ -1491,12 +1559,15 @@
 { "FW_CDEV_IOC_SEND_STREAM_PACKET", 0x40282313 },
 { "EVIOCSKEYCODE_V2", 0x40284504 },
 { "SNDCTL_FM_LOAD_INSTR", 0x40285107 },
+{ "DRM_IOCTL_AMDGPU_GEM_VA", 0x40286448 },
 { "DRM_IOCTL_VIA_DMA_BLIT", 0x4028644e },
 { "DRM_IOCTL_I915_GEM_EXECBUFFER", 0x40286454 },
+{ "RIO_UNMAP_OUTBOUND", 0x40286d10 },
 { "PHN_SETREGS", 0x40287008 },
 { "RTC_WKALM_SET", 0x4028700f },
 { "VHOST_SET_VRING_ADDR", 0x4028af11 },
 { "EVIOCSFF", 0x402c4580 },
+{ "NVM_DEV_INIT", 0x402c4c24 },
 { "NVME_IOCTL_SUBMIT_IO", 0x402c4e42 },
 { "SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", 0x402c5342 },
 { "TCSETS2", 0x402c542b },
@@ -1538,7 +1609,12 @@
 { "KVM_X86_SET_MCE", 0x4040ae9e },
 { "KVM_SET_VCPU_EVENTS", 0x4040aea0 },
 { "KVM_ASSIGN_SET_INTX_MASK", 0x4040aea4 },
+{ "KVM_S390_MEM_OP", 0x4040aeb1 },
+{ "KVM_S390_GET_SKEYS", 0x4040aeb2 },
+{ "KVM_S390_SET_SKEYS", 0x4040aeb3 },
 { "CXL_IOCTL_START_WORK", 0x4040ca00 },
+{ "CXL_IOCTL_DOWNLOAD_IMAGE", 0x4040ca0a },
+{ "CXL_IOCTL_VALIDATE_IMAGE", 0x4040ca0b },
 { "OMAPFB_SETUP_PLANE", 0x40444f34 },
 { "OMAPFB_QUERY_PLANE", 0x40444f35 },
 { "OMAPFB_UPDATE_WINDOW", 0x40444f36 },
@@ -1548,6 +1624,7 @@
 { "SET_ARRAY_INFO", 0x40480923 },
 { "SNDRV_EMU10K1_IOCTL_PCM_POKE", 0x40484830 },
 { "KVM_SET_GUEST_DEBUG", 0x4048ae9b },
+{ "KVM_S390_IRQ", 0x4048aeb4 },
 { "GSMIOC_SETCONF", 0x404c4701 },
 { "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", 0x404c534a },
 { "SNDRV_HWDEP_IOCTL_DSP_LOAD", 0x40504803 },
@@ -1560,6 +1637,7 @@
 { "FDSETDRVPRM", 0x40580290 },
 { "SNDRV_SEQ_IOCTL_SET_CLIENT_POOL", 0x4058534c },
 { "DRM_IOCTL_R128_INIT", 0x40586440 },
+{ "UI_DEV_SETUP", 0x405c5503 },
 { "DRM_IOCTL_MGA_INIT", 0x405c6440 },
 { "PTP_PIN_SETFUNC", 0x40603d07 },
 { "SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER", 0x40605346 },
@@ -1568,6 +1646,8 @@
 { "CHIOGELEM", 0x406c6310 },
 { "KVM_SET_PIT2", 0x4070aea0 },
 { "NILFS_IOCTL_CLEAN_SEGMENTS", 0x40786e88 },
+{ "V4L2_DEVICE_NOTIFY_EVENT", 0x40787602 },
+{ "NVM_DEV_CREATE", 0x40804c22 },
 { "UBI_IOCVOLCRBLK", 0x40804f07 },
 { "KVM_PPC_GET_PVINFO", 0x4080aea1 },
 { "KVM_SET_DEBUGREGS", 0x4080aea2 },
@@ -1610,6 +1690,8 @@
 { "SNDRV_SB_CSP_IOCTL_LOAD_CODE", 0x70124811 },
 { "MFB_GET_ALPHA", 0x80014d00 },
 { "MFB_GET_GAMMA", 0x80014d01 },
+{ "USBTMC488_IOCTL_GET_CAPS", 0x80015b11 },
+{ "USBTMC488_IOCTL_READ_STB", 0x80015b12 },
 { "GADGET_GET_PRINTER_STATUS", 0x80016721 },
 { "JSIOCGAXES", 0x80016a11 },
 { "JSIOCGBUTTONS", 0x80016a12 },
@@ -1640,8 +1722,6 @@
 { "BLKBSZGET", 0x80041270 },
 { "BLKGETSIZE64", 0x80041272 },
 { "PERF_EVENT_IOC_ID", 0x80042407 },
-{ "BLKI2OGRSTRAT", 0x80043201 },
-{ "BLKI2OGWSTRAT", 0x80043202 },
 { "FBIO_RADEON_GET_MIRROR", 0x80044003 },
 { "AGPIOC_INFO", 0x80044100 },
 { "SNDRV_PCM_IOCTL_PVERSION", 0x80044100 },
@@ -1656,6 +1736,8 @@
 { "CCISS_GETFIRMVER", 0x80044208 },
 { "CCISS_GETDRIVVER", 0x80044209 },
 { "SNDRV_COMPRESS_IOCTL_VERSION", 0x80044300 },
+{ "CS_GET_STATE", 0x80044315 },
+{ "CS_GET_IF_VERSION", 0x8004431e },
 { "CAPI_GET_FLAGS", 0x80044323 },
 { "CAPI_SET_FLAGS", 0x80044324 },
 { "CAPI_CLR_FLAGS", 0x80044325 },
@@ -1672,6 +1754,7 @@
 { "SNDRV_HWDEP_IOCTL_PVERSION", 0x80044800 },
 { "HIDIOCGRDESCSIZE", 0x80044801 },
 { "HIDIOCGVERSION", 0x80044801 },
+{ "IOCTL_MEI_NOTIFY_GET", 0x80044803 },
 { "HIDIOCGFLAG", 0x8004480e },
 { "HDA_IOCTL_PVERSION", 0x80044810 },
 { "SNDRV_EMU10K1_IOCTL_PVERSION", 0x80044840 },
@@ -1733,6 +1816,7 @@
 { "TUNGETSNDBUF", 0x800454d3 },
 { "TUNGETVNETHDRSZ", 0x800454d7 },
 { "TUNGETVNETLE", 0x800454dd },
+{ "TUNGETVNETBE", 0x800454df },
 { "SNDRV_CTL_IOCTL_PVERSION", 0x80045500 },
 { "USBDEVFS_RESETEP", 0x80045503 },
 { "USBDEVFS_SETCONFIGURATION", 0x80045505 },
@@ -1760,6 +1844,7 @@
 { "SONET_GETDIAG", 0x80046114 },
 { "SONET_GETFRAMING", 0x80046116 },
 { "CM_IOCGSTATUS", 0x80046300 },
+{ "KCOV_INIT_TRACE", 0x80046301 },
 { "CHIOGPICKER", 0x80046304 },
 { "DRM_IOCTL_GET_MAGIC", 0x80046402 },
 { "DRM_IOCTL_I915_GET_VBLANK_PIPE", 0x8004644e },
@@ -1806,7 +1891,9 @@
 { "MMTIMER_GETRES", 0x80046d01 },
 { "MMTIMER_GETFREQ", 0x80046d02 },
 { "MTIOCPOS", 0x80046d03 },
+{ "RIO_MPORT_MAINT_PORT_IDX_GET", 0x80046d03 },
 { "MMTIMER_GETCOUNTER", 0x80046d09 },
+{ "RIO_GET_EVENT_MASK", 0x80046d0e },
 { "NCP_IOC_SIGN_WANTED", 0x80046e06 },
 { "NCP_IOC_SETDENTRYTTL", 0x80046e0c },
 { "MATROXFB_GET_OUTPUT_CONNECTION", 0x80046ef8 },
@@ -1871,6 +1958,7 @@
 { "GENWQE_GET_CARD_STATE", 0x8004a524 },
 { "KVM_GET_MP_STATE", 0x8004ae98 },
 { "CXL_IOCTL_GET_PROCESS_ELEMENT", 0x8004ca01 },
+{ "FUSE_DEV_IOC_CLONE", 0x8004e500 },
 { "SISFB_GET_INFO_SIZE", 0x8004f300 },
 { "SISFB_GET_VBRSTATUS", 0x8004f302 },
 { "SISFB_GET_AUTOMAXIMIZE", 0x8004f303 },
@@ -1934,6 +2022,7 @@
 { "OMAPFB_GET_CAPS", 0x800c4f2a },
 { "SNDCTL_DSP_GETIPTR", 0x800c5011 },
 { "SNDCTL_DSP_GETOPTR", 0x800c5012 },
+{ "FS_IOC_SET_ENCRYPTION_POLICY", 0x800c6613 },
 { "HPET_INFO", 0x800c6803 },
 { "IPMICTL_REGISTER_FOR_CMD_CHANS", 0x800c691c },
 { "IPMICTL_UNREGISTER_FOR_CMD_CHANS", 0x800c691d },
@@ -1944,8 +2033,10 @@
 { "FE_DISEQC_RECV_SLAVE_REPLY", 0x800c6f40 },
 { "CA_GET_SLOT_INFO", 0x800c6f82 },
 { "FDGETDRVTYP", 0x8010020f },
+{ "STP_POLICY_ID_GET", 0x80102501 },
 { "SNDRV_PCM_IOCTL_CHANNEL_INFO", 0x80104132 },
 { "CCISS_GETNODENAME", 0x80104204 },
+{ "EVIOCGMASK", 0x80104592 },
 { "SNDRV_HDSPM_IOCTL_GET_LTC", 0x80104846 },
 { "ECCGETSTATS", 0x80104d12 },
 { "OMAPFB_MEMORY_READ", 0x80104f3a },
@@ -1962,6 +2053,8 @@
 { "GENWQE_READ_REG64", 0x8010a51e },
 { "GENWQE_READ_REG32", 0x8010a520 },
 { "GENWQE_READ_REG16", 0x8010a522 },
+{ "UFFDIO_UNREGISTER", 0x8010aa01 },
+{ "UFFDIO_WAKE", 0x8010aa02 },
 { "FDGETMAXERRS", 0x8014020e },
 { "GET_DISK_INFO", 0x80140912 },
 { "SNDRV_COMPRESS_TSTAMP", 0x80144320 },
@@ -1974,6 +2067,8 @@
 { "FDWERRORGET", 0x80180217 },
 { "SNDRV_HDSPM_IOCTL_GET_CONFIG", 0x80184841 },
 { "IMSETDEVNAME", 0x80184947 },
+{ "RIO_MPORT_MAINT_READ_LOCAL", 0x80186d05 },
+{ "RIO_MPORT_MAINT_READ_REMOTE", 0x80186d07 },
 { "NCP_IOC_SIGN_INIT", 0x80186e05 },
 { "NILFS_IOCTL_GET_CPINFO", 0x80186e82 },
 { "NILFS_IOCTL_GET_CPSTAT", 0x80186e83 },
@@ -1984,6 +2079,7 @@
 { "SNDRV_COMPRESS_AVAIL", 0x801c4321 },
 { "HIDIOCGDEVINFO", 0x801c4803 },
 { "SNDRV_HDSPM_IOCTL_GET_STATUS", 0x801c4847 },
+{ "FS_IOC_FSGETXATTR", 0x801c581f },
 { "IPMICTL_SEND_COMMAND_SETTIME", 0x801c6915 },
 { "MTIOCGET", 0x801c6d02 },
 { "RTC_PLL_GET", 0x801c7011 },
@@ -2020,6 +2116,7 @@
 { "USBDEVFS_SUBMITURB", 0x802c550a },
 { "VIDIOC_G_FBUF", 0x802c560a },
 { "SOUND_OLD_MIXER_INFO", 0x80304d65 },
+{ "RIO_MPORT_GET_PROPERTIES", 0x80306d04 },
 { "NILFS_IOCTL_GET_SUSTAT", 0x80306e85 },
 { "BTRFS_IOC_QGROUP_LIMIT", 0x8030942b },
 { "KVM_GET_CLOCK", 0x8030ae7c },
@@ -2035,6 +2132,8 @@
 { "BTRFS_IOC_QUOTA_RESCAN_STATUS", 0x8040942d },
 { "KVM_ASSIGN_PCI_DEVICE", 0x8040ae69 },
 { "KVM_GET_VCPU_EVENTS", 0x8040ae9f },
+{ "CXL_IOCTL_GET_AFU_ID", 0x8040ca02 },
+{ "GPIO_GET_CHIPINFO_IOCTL", 0x8044b401 },
 { "GET_ARRAY_INFO", 0x80480911 },
 { "PPPIOCGL2TPSTATS", 0x80487436 },
 { "BTRFS_IOC_GET_SUPPORTED_FEATURES", 0x80489439 },
@@ -2094,10 +2193,10 @@
 { "SNDCTL_COPR_RCVMSG", 0x8fa44309 },
 { "GET_BITMAP_FILE", 0x90000915 },
 { "SNDRV_HDSP_IOCTL_GET_MIXER", 0x90004844 },
+{ "NVM_GET_DEVICES", 0x90004c21 },
 { "BTRFS_IOC_DEVICES_READY", 0x90009427 },
 { "KVM_GET_XSAVE", 0x9000aea4 },
 { "HIDIOCGRDESC", 0x90044802 },
-{ "SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER", 0xc0005343 },
 { "GADGET_SET_PRINTER_STATUS", 0xc0016722 },
 { "AGPIOC_ALLOCATE", 0xc0044106 },
 { "CAPI_GET_MANUFACTURER", 0xc0044306 },
@@ -2152,6 +2251,7 @@
 { "DRM_IOCTL_RADEON_IRQ_EMIT", 0xc0046456 },
 { "DRM_IOCTL_MODE_RMFB", 0xc00464af },
 { "DRM_IOCTL_MODE_DESTROY_DUMB", 0xc00464b4 },
+{ "DRM_IOCTL_MODE_DESTROYPROPBLOB", 0xc00464be },
 { "I8K_GET_SPEED", 0xc0046985 },
 { "I8K_GET_FAN", 0xc0046986 },
 { "I8K_SET_FAN", 0xc0046987 },
@@ -2167,8 +2267,8 @@
 { "MIC_VIRTIO_ADD_DEVICE", 0xc0047301 },
 { "MIC_VIRTIO_COPY_DESC", 0xc0047302 },
 { "MIC_VIRTIO_CONFIG_CHANGE", 0xc0047305 },
+{ "SCIF_FENCE_WAIT", 0xc0047310 },
 { "PPPIOCNEWUNIT", 0xc004743e },
-{ "TOSH_SMM", 0xc0047490 },
 { "MEYEIOC_SYNC", 0xc00476c3 },
 { "AUTOFS_IOC_SETTIMEOUT", 0xc0049364 },
 { "KVM_GET_MSR_INDEX_LIST", 0xc004ae02 },
@@ -2184,6 +2284,9 @@
 { "ION_IOC_CUSTOM", 0xc0084906 },
 { "ION_IOC_SYNC", 0xc0084907 },
 { "AMDKFD_IOC_DESTROY_QUEUE", 0xc0084b03 },
+{ "ND_IOCTL_DIMM_FLAGS", 0xc0084e03 },
+{ "ND_IOCTL_SET_CONFIG_DATA", 0xc0084e06 },
+{ "ND_IOCTL_VENDOR", 0xc0084e09 },
 { "SNDRV_CTL_IOCTL_TLV_READ", 0xc008551a },
 { "SNDRV_CTL_IOCTL_TLV_WRITE", 0xc008551b },
 { "SNDRV_CTL_IOCTL_TLV_COMMAND", 0xc008551c },
@@ -2199,13 +2302,14 @@
 { "DRM_IOCTL_RES_CTX", 0xc0086426 },
 { "DRM_IOCTL_SG_ALLOC", 0xc0086438 },
 { "DRM_IOCTL_QXL_ALLOC", 0xc0086440 },
-{ "DRM_IOCTL_TEGRA_GEM_MMAP", 0xc0086441 },
+{ "DRM_IOCTL_AMDGPU_GEM_MMAP", 0xc0086441 },
 { "DRM_IOCTL_SAVAGE_BCI_EVENT_EMIT", 0xc0086442 },
 { "DRM_IOCTL_TEGRA_SYNCPT_READ", 0xc0086442 },
 { "DRM_IOCTL_VIA_AGP_INIT", 0xc0086442 },
 { "DRM_IOCTL_TEGRA_SYNCPT_INCR", 0xc0086443 },
 { "DRM_IOCTL_VIA_FB_INIT", 0xc0086443 },
 { "DRM_IOCTL_I915_GETPARAM", 0xc0086446 },
+{ "DRM_IOCTL_VIRTGPU_WAIT", 0xc0086448 },
 { "DRM_IOCTL_MGA_GETPARAM", 0xc0086449 },
 { "DRM_IOCTL_TEGRA_GEM_SET_FLAGS", 0xc008644c },
 { "DRM_IOCTL_TEGRA_GEM_GET_FLAGS", 0xc008644d },
@@ -2222,6 +2326,9 @@
 { "DRM_IOCTL_EXYNOS_IPP_CMD_CTRL", 0xc0086473 },
 { "NCP_IOC_GETPRIVATEDATA", 0xc0086e0a },
 { "PHN_GETREG", 0xc0087005 },
+{ "SCIF_BIND", 0xc0087301 },
+{ "SCIF_CONNECT", 0xc0087303 },
+{ "SCIF_ACCEPTREG", 0xc0087305 },
 { "PPPIOCGNPMODE", 0xc008744c },
 { "KVM_GET_SUPPORTED_CPUID", 0xc008ae05 },
 { "KVM_GET_EMULATED_CPUID", 0xc008ae09 },
@@ -2233,10 +2340,14 @@
 { "FSL_HV_IOCTL_PARTITION_STOP", 0xc008af04 },
 { "FSL_HV_IOCTL_DOORBELL", 0xc008af06 },
 { "VHOST_GET_VRING_BASE", 0xc008af12 },
+{ "MMC_IOC_MULTI_CMD", 0xc008b301 },
 { "HIDIOCGREPORTINFO", 0xc00c4809 },
 { "SNDRV_EMU10K1_IOCTL_TRAM_PEEK", 0xc00c4822 },
 { "MEMWRITEOOB", 0xc00c4d03 },
 { "MEMREADOOB", 0xc00c4d04 },
+{ "ND_IOCTL_SMART_THRESHOLD", 0xc00c4e02 },
+{ "ND_IOCTL_GET_CONFIG_SIZE", 0xc00c4e04 },
+{ "ND_IOCTL_GET_CONFIG_DATA", 0xc00c4e05 },
 { "SNDCTL_SYNTH_REMOVESAMPLE", 0xc00c5116 },
 { "USBDEVFS_IOCTL", 0xc00c5512 },
 { "UI_BEGIN_FF_ERASE", 0xc00c55ca },
@@ -2254,10 +2365,12 @@
 { "I2OHRTGET", 0xc00c6901 },
 { "I2OLCTGET", 0xc00c6902 },
 { "NCP_IOC_GETOBJECTNAME", 0xc00c6e09 },
+{ "SCIF_FENCE_MARK", 0xc00c730f },
 { "UVCIOC_CTRL_QUERY", 0xc00c7521 },
 { "KVM_CREATE_DEVICE", 0xc00caee0 },
 { "FSL_HV_IOCTL_PARTITION_GET_STATUS", 0xc00caf02 },
 { "MBXFB_IOCX_REG", 0xc00cf405 },
+{ "STP_POLICY_ID_SET", 0xc0102500 },
 { "CAPI_GET_VERSION", 0xc0104307 },
 { "GIGASET_VERSION", 0xc0104703 },
 { "IOCTL_MEI_CONNECT_CLIENT", 0xc0104801 },
@@ -2276,21 +2389,35 @@
 { "DRM_IOCTL_GET_CAP", 0xc010640c },
 { "DRM_IOCTL_AGP_ALLOC", 0xc0106434 },
 { "DRM_IOCTL_WAIT_VBLANK", 0xc010643a },
+{ "DRM_IOCTL_ETNAVIV_GET_PARAM", 0xc0106440 },
 { "DRM_IOCTL_EXYNOS_GEM_CREATE", 0xc0106440 },
 { "DRM_IOCTL_MSM_GET_PARAM", 0xc0106440 },
 { "DRM_IOCTL_OMAP_GET_PARAM", 0xc0106440 },
 { "DRM_IOCTL_TEGRA_GEM_CREATE", 0xc0106440 },
+{ "DRM_IOCTL_EXYNOS_GEM_MAP", 0xc0106441 },
 { "DRM_IOCTL_QXL_MAP", 0xc0106441 },
+{ "DRM_IOCTL_TEGRA_GEM_MMAP", 0xc0106441 },
+{ "DRM_IOCTL_VC4_WAIT_SEQNO", 0xc0106441 },
+{ "DRM_IOCTL_VIRTGPU_MAP", 0xc0106441 },
+{ "DRM_IOCTL_AMDGPU_CTX", 0xc0106442 },
+{ "DRM_IOCTL_ETNAVIV_GEM_NEW", 0xc0106442 },
 { "DRM_IOCTL_MSM_GEM_NEW", 0xc0106442 },
+{ "DRM_IOCTL_VC4_WAIT_BO", 0xc0106442 },
+{ "DRM_IOCTL_ETNAVIV_GEM_INFO", 0xc0106443 },
 { "DRM_IOCTL_MSM_GEM_INFO", 0xc0106443 },
 { "DRM_IOCTL_OMAP_GEM_NEW", 0xc0106443 },
+{ "DRM_IOCTL_VC4_CREATE_BO", 0xc0106443 },
+{ "DRM_IOCTL_VIRTGPU_GETPARAM", 0xc0106443 },
 { "DRM_IOCTL_EXYNOS_GEM_GET", 0xc0106444 },
 { "DRM_IOCTL_QXL_GETPARAM", 0xc0106444 },
 { "DRM_IOCTL_SIS_FB_ALLOC", 0xc0106444 },
 { "DRM_IOCTL_TEGRA_SYNCPT_WAIT", 0xc0106444 },
+{ "DRM_IOCTL_VC4_MMAP_BO", 0xc0106444 },
 { "DRM_IOCTL_I810_GETBUF", 0xc0106445 },
 { "DRM_IOCTL_TEGRA_OPEN_CHANNEL", 0xc0106445 },
+{ "DRM_IOCTL_VIRTGPU_RESOURCE_INFO", 0xc0106445 },
 { "DRM_IOCTL_TEGRA_CLOSE_CHANNEL", 0xc0106446 },
+{ "DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE", 0xc0106447 },
 { "DRM_IOCTL_EXYNOS_VIDI_CONNECTION", 0xc0106447 },
 { "DRM_IOCTL_TEGRA_GET_SYNCPT", 0xc0106447 },
 { "DRM_IOCTL_VIA_DMA_INIT", 0xc0106447 },
@@ -2301,6 +2428,7 @@
 { "DRM_IOCTL_RADEON_INDIRECT", 0xc010644d },
 { "DRM_IOCTL_VIA_WAIT_IRQ", 0xc010644d },
 { "DRM_IOCTL_R128_INDIRECT", 0xc010644f },
+{ "DRM_IOCTL_AMDGPU_GEM_OP", 0xc0106450 },
 { "DRM_IOCTL_RADEON_ALLOC", 0xc0106453 },
 { "DRM_IOCTL_SIS_AGP_ALLOC", 0xc0106454 },
 { "DRM_IOCTL_I915_GEM_CREATE", 0xc010645b },
@@ -2314,8 +2442,11 @@
 { "DRM_IOCTL_MODE_SETPROPERTY", 0xc01064ab },
 { "DRM_IOCTL_MODE_GETPROPBLOB", 0xc01064ac },
 { "DRM_IOCTL_MODE_MAP_DUMB", 0xc01064b3 },
+{ "DRM_IOCTL_MODE_CREATEPROPBLOB", 0xc01064bd },
 { "MGSL_IOCWAITGPIO", 0xc0106d12 },
 { "DMX_GET_STC", 0xc0106f32 },
+{ "SCIF_ACCEPTREQ", 0xc0107304 },
+{ "SCIF_UNREG", 0xc0107309 },
 { "BTRFS_IOC_SPACE_INFO", 0xc0109414 },
 { "BTRFS_IOC_QUOTA_CTL", 0xc0109428 },
 { "FSL_HV_IOCTL_PARTITION_START", 0xc010af03 },
@@ -2331,15 +2462,19 @@
 { "VIDIOC_G_CROP", 0xc014563b },
 { "DRM_IOCTL_VIA_ALLOCMEM", 0xc0146440 },
 { "DRM_IOCTL_VIA_MAP_INIT", 0xc0146444 },
-{ "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", 0xc014646b },
+{ "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", 0xc014646a },
 { "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", 0xc014646b },
 { "DRM_IOCTL_MODE_GETENCODER", 0xc01464a6 },
 { "DRM_IOCTL_MODE_OBJ_SETPROPERTY", 0xc01464ba },
+{ "SCIF_SEND", 0xc0147306 },
+{ "SCIF_RECV", 0xc0147307 },
+{ "SCIF_GET_NODEIDS", 0xc014730e },
 { "FW_CDEV_IOC_ADD_DESCRIPTOR", 0xc0182306 },
 { "FW_CDEV_IOC_QUEUE_ISO", 0xc0182309 },
 { "FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE", 0xc018230d },
 { "HIDIOCGUSAGE", 0xc018480b },
 { "HIDIOCGUCODE", 0xc018480d },
+{ "AMDKFD_IOC_WAIT_EVENTS", 0xc0184b0c },
 { "MEMWRITEOOB64", 0xc0184d15 },
 { "MEMREADOOB64", 0xc0184d16 },
 { "VIDIOC_G_EXT_CTRLS", 0xc0185647 },
@@ -2352,23 +2487,35 @@
 { "DRM_IOCTL_GET_CLIENT", 0xc0186405 },
 { "DRM_IOCTL_ADD_MAP", 0xc0186415 },
 { "DRM_IOCTL_ADD_BUFS", 0xc0186416 },
+{ "DRM_IOCTL_AMDGPU_BO_LIST", 0xc0186443 },
+{ "DRM_IOCTL_AMDGPU_CS", 0xc0186444 },
+{ "DRM_IOCTL_VC4_CREATE_SHADER_BO", 0xc0186445 },
 { "DRM_IOCTL_OMAP_GEM_INFO", 0xc0186446 },
 { "DRM_IOCTL_QXL_ALLOC_SURF", 0xc0186446 },
+{ "DRM_IOCTL_ETNAVIV_GEM_USERPTR", 0xc0186448 },
+{ "DRM_IOCTL_VIRTGPU_GET_CAPS", 0xc0186449 },
 { "DRM_IOCTL_RADEON_TEXTURE", 0xc018644e },
+{ "DRM_IOCTL_AMDGPU_GEM_USERPTR", 0xc0186451 },
 { "DRM_IOCTL_I915_GEM_PIN", 0xc0186455 },
 { "DRM_IOCTL_RADEON_GEM_INFO", 0xc018645c },
 { "DRM_IOCTL_RADEON_GEM_VA", 0xc018646b },
 { "DRM_IOCTL_RADEON_GEM_USERPTR", 0xc018646d },
 { "DRM_IOCTL_I915_GET_RESET_STATS", 0xc0186472 },
 { "DRM_IOCTL_I915_GEM_USERPTR", 0xc0186473 },
+{ "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM", 0xc0186474 },
+{ "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM", 0xc0186475 },
 { "DRM_IOCTL_MODE_PAGE_FLIP", 0xc01864b0 },
 { "DRM_IOCTL_MODE_DIRTYFB", 0xc01864b1 },
 { "I2OPARMSET", 0xc0186903 },
 { "I2OPARMGET", 0xc0186904 },
 { "IPMICTL_RECEIVE_MSG_TRUNC", 0xc018690b },
 { "IPMICTL_RECEIVE_MSG", 0xc018690c },
+{ "RIO_ALLOC_DMA", 0xc0186d13 },
+{ "RIO_TRANSFER", 0xc0186d15 },
 { "NILFS_IOCTL_GET_VINFO", 0xc0186e86 },
 { "NILFS_IOCTL_GET_BDESCS", 0xc0186e87 },
+{ "TOSH_SMM", 0xc0187490 },
+{ "TOSHIBA_ACPI_SCI", 0xc0187491 },
 { "AUTOFS_DEV_IOCTL_VERSION", 0xc0189371 },
 { "AUTOFS_DEV_IOCTL_PROTOVER", 0xc0189372 },
 { "AUTOFS_DEV_IOCTL_PROTOSUBVER", 0xc0189373 },
@@ -2384,6 +2531,8 @@
 { "AUTOFS_DEV_IOCTL_ASKUMOUNT", 0xc018937d },
 { "AUTOFS_DEV_IOCTL_ISMOUNTPOINT", 0xc018937e },
 { "BTRFS_IOC_FILE_EXTENT_SAME", 0xc0189436 },
+{ "FIDEDUPERANGE", 0xc0189436 },
+{ "UFFDIO_API", 0xc018aa3f },
 { "KVM_TRANSLATE", 0xc018ae85 },
 { "IB_USER_MAD_REGISTER_AGENT", 0xc01c1b01 },
 { "FW_CDEV_IOC_CREATE_ISO_CONTEXT", 0xc01c2308 },
@@ -2400,13 +2549,18 @@
 { "I2OHTML", 0xc01c6909 },
 { "MEDIA_IOC_ENUM_LINKS", 0xc01c7c02 },
 { "FW_CDEV_IOC_ALLOCATE", 0xc0202302 },
+{ "AMDKFD_IOC_CREATE_EVENT", 0xc0204b08 },
+{ "ND_IOCTL_ARS_CAP", 0xc0204e01 },
+{ "ND_IOCTL_ARS_START", 0xc0204e02 },
+{ "ND_IOCTL_CLEAR_ERROR", 0xc0204e04 },
 { "VIDIOC_OMAP3ISP_CCDC_CFG", 0xc02056c1 },
 { "VIDIOC_OMAP3ISP_AEWB_CFG", 0xc02056c3 },
 { "SNDRV_RAWMIDI_IOCTL_PARAMS", 0xc0205710 },
 { "X86_IOC_RDMSR_REGS", 0xc02063a0 },
 { "X86_IOC_WRMSR_REGS", 0xc02063a1 },
+{ "DRM_IOCTL_AMDGPU_GEM_CREATE", 0xc0206440 },
 { "DRM_IOCTL_MSM_GEM_SUBMIT", 0xc0206446 },
-{ "DRM_IOCTL_I915_GEM_MMAP", 0xc020645e },
+{ "DRM_IOCTL_AMDGPU_WAIT_CS", 0xc0206449 },
 { "DRM_IOCTL_RADEON_GEM_MMAP", 0xc020645e },
 { "DRM_IOCTL_RADEON_GEM_PREAD", 0xc0206461 },
 { "DRM_IOCTL_RADEON_GEM_PWRITE", 0xc0206462 },
@@ -2418,6 +2572,8 @@
 { "FS_IOC_FIEMAP", 0xc020660b },
 { "GENWQE_PIN_MEM", 0xc020a528 },
 { "GENWQE_UNPIN_MEM", 0xc020a529 },
+{ "UFFDIO_REGISTER", 0xc020aa00 },
+{ "UFFDIO_ZEROPAGE", 0xc020aa04 },
 { "SNDCTL_MIDI_MPUCMD", 0xc0216d02 },
 { "FW_CDEV_IOC_GET_INFO", 0xc0242300 },
 { "SNDRV_COMPRESS_GET_METADATA", 0xc0244315 },
@@ -2427,8 +2583,15 @@
 { "VIDIOC_S_EDID", 0xc0245629 },
 { "SNDRV_RAWMIDI_IOCTL_STATUS", 0xc0245720 },
 { "DRM_IOCTL_VERSION", 0xc0246400 },
+{ "DRM_IOCTL_VIRTGPU_TRANSFER_FROM_HOST", 0xc0246446 },
+{ "DRM_IOCTL_VIRTGPU_TRANSFER_TO_HOST", 0xc0246447 },
 { "DRM_IOCTL_MODE_CURSOR2", 0xc02464bb },
 { "NCP_IOC_GET_FS_INFO_V2", 0xc0246e04 },
+{ "SCIF_READFROM", 0xc024730a },
+{ "SCIF_WRITETO", 0xc024730b },
+{ "SCIF_VREADFROM", 0xc024730c },
+{ "SCIF_VWRITETO", 0xc024730d },
+{ "SCIF_FENCE_SIGNAL", 0xc0247311 },
 { "IB_USER_MAD_REGISTER_AGENT2", 0xc0281b04 },
 { "SYNC_IOC_MERGE", 0xc0283e01 },
 { "SYNC_IOC_FENCE_INFO", 0xc0283e02 },
@@ -2437,11 +2600,16 @@
 { "VIDIOC_TRY_ENCODER_CMD", 0xc028564e },
 { "SW_SYNC_IOC_CREATE_FENCE", 0xc0285700 },
 { "DRM_IOCTL_DMA", 0xc0286429 },
+{ "DRM_IOCTL_I915_GEM_MMAP", 0xc028645e },
 { "DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST", 0xc0286461 },
 { "DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF", 0xc0286472 },
 { "DRM_IOCTL_NOUVEAU_GEM_INFO", 0xc0286484 },
+{ "RIO_MAP_OUTBOUND", 0xc0286d0f },
+{ "RIO_MAP_INBOUND", 0xc0286d11 },
 { "NCP_IOC_GET_FS_INFO", 0xc0286e04 },
 { "PHN_GETREGS", 0xc0287007 },
+{ "SCIF_REG", 0xc0287308 },
+{ "UFFDIO_COPY", 0xc028aa03 },
 { "KVM_TPR_ACCESS_REPORTING", 0xc028ae92 },
 { "FSL_HV_IOCTL_MEMCPY", 0xc028af05 },
 { "FSL_HV_IOCTL_GETPROP", 0xc028af07 },
@@ -2454,12 +2622,14 @@
 { "VIDIOC_ENUM_FRAMESIZES", 0xc02c564a },
 { "DRM_IOCTL_I915_OVERLAY_ATTRS", 0xc02c6468 },
 { "MEMWRITE", 0xc0304d18 },
+{ "ND_IOCTL_ARS_STATUS", 0xc0304e03 },
 { "SNDRV_SEQ_IOCTL_SYSTEM_INFO", 0xc0305302 },
 { "VIDIOC_SUBDEV_ENUM_MBUS_CODE", 0xc0305602 },
 { "VIDIOC_SUBDEV_G_FRAME_INTERVAL", 0xc0305615 },
 { "VIDIOC_SUBDEV_S_FRAME_INTERVAL", 0xc0305616 },
 { "VIDIOC_OMAP3ISP_HIST_CFG", 0xc03056c4 },
 { "BINDER_WRITE_READ", 0xc0306201 },
+{ "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", 0xc0306446 },
 { "DRM_IOCTL_NOUVEAU_GEM_NEW", 0xc0306480 },
 { "DRM_IOCTL_MODE_SETPLANE", 0xc03064b7 },
 { "MBXFB_IOCX_OVERLAY", 0xc030f400 },
@@ -2471,12 +2641,15 @@
 { "VIDIOC_SUBDEV_G_CROP", 0xc038563b },
 { "VIDIOC_SUBDEV_S_CROP", 0xc038563c },
 { "VIDIOC_DBG_G_REGISTER", 0xc0385650 },
+{ "DRM_IOCTL_VIRTGPU_RESOURCE_CREATE", 0xc0386444 },
+{ "DRM_IOCTL_MODE_ATOMIC", 0xc03864bc },
 { "BTRFS_IOC_INO_PATHS", 0xc0389423 },
 { "BTRFS_IOC_LOGICAL_INO", 0xc0389424 },
 { "GENWQE_SLU_UPDATE", 0xc038a550 },
 { "GENWQE_SLU_READ", 0xc038a551 },
 { "VIDIOC_OMAP3ISP_PRV_CFG", 0xc03c56c2 },
 { "BLKTRACESETUP", 0xc0401273 },
+{ "PTP_SYS_OFFSET_PRECISE", 0xc0403d08 },
 { "CAPI_GET_PROFILE", 0xc0404309 },
 { "SNDRV_TIMER_IOCTL_GSTATUS", 0xc0405405 },
 { "SNDRV_CTL_IOCTL_ELEM_REMOVE", 0xc0405519 },
@@ -2499,7 +2672,6 @@
 { "VIDIOC_QUERYCTRL", 0xc0445624 },
 { "VIDIOC_G_MODULATOR", 0xc0445636 },
 { "VIDIOC_PREPARE_BUF", 0xc044565d },
-{ "DRM_IOCTL_MODE_ADDFB2", 0xc04464b8 },
 { "FBIO_CURSOR", 0xc0484608 },
 { "SNDRV_EMU10K1_IOCTL_PCM_PEEK", 0xc0484831 },
 { "NVME_IOCTL_ADMIN_CMD", 0xc0484e41 },
@@ -2512,8 +2684,10 @@
 { "DRM_IOCTL_MODE_DETACHMODE", 0xc04864a9 },
 { "VIDEO_COMMAND", 0xc0486f3b },
 { "VIDEO_TRY_COMMAND", 0xc0486f3c },
+{ "MEDIA_IOC_G_TOPOLOGY", 0xc0487c04 },
 { "KVM_GET_PIT", 0xc048ae65 },
 { "MMC_IOC_CMD", 0xc048b300 },
+{ "GPIO_GET_LINEINFO_IOCTL", 0xc048b402 },
 { "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", 0xc04c5349 },
 { "VIDIOC_ENUMINPUT", 0xc04c561a },
 { "VIDIOC_OMAP3ISP_AF_CFG", 0xc04c56c5 },
@@ -2536,14 +2710,25 @@
 { "SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER", 0xc0605345 },
 { "UI_BEGIN_FF_UPLOAD", 0xc06055c8 },
 { "DRM_IOCTL_EXYNOS_IPP_SET_PROPERTY", 0xc0606471 },
+{ "DK_CXLFLASH_DETACH", 0xc060ca83 },
+{ "DRM_IOCTL_MODE_ADDFB2", 0xc06464b8 },
 { "SNDRV_PCM_IOCTL_SW_PARAMS", 0xc0684113 },
 { "DRM_IOCTL_MODE_GETCRTC", 0xc06864a1 },
 { "DRM_IOCTL_MODE_SETCRTC", 0xc06864a2 },
+{ "DK_CXLFLASH_RELEASE", 0xc068ca82 },
+{ "DK_CXLFLASH_MANAGE_LUN", 0xc068ca86 },
+{ "SNDRV_PCM_IOCTL_STATUS_EXT", 0xc06c4124 },
 { "BTRFS_IOC_TREE_SEARCH_V2", 0xc0709411 },
+{ "DK_CXLFLASH_USER_DIRECT", 0xc070ca81 },
+{ "DK_CXLFLASH_VLUN_CLONE", 0xc070ca89 },
 { "SNDCTL_MIDI_INFO", 0xc074510c },
 { "VIDIOC_G_SLICED_VBI_CAP", 0xc0745645 },
+{ "DK_CXLFLASH_RECOVER_AFU", 0xc078ca85 },
+{ "DK_CXLFLASH_USER_VIRTUAL", 0xc078ca87 },
+{ "DK_CXLFLASH_VLUN_RESIZE", 0xc078ca88 },
 { "SOUND_MIXER_ACCESS", 0xc0804d66 },
 { "SNDRV_PCM_IOCTL_SYNC_PTR", 0xc0844123 },
+{ "ND_IOCTL_SMART", 0xc0844e01 },
 { "VIDIOC_SUBDEV_S_DV_TIMINGS", 0xc0845657 },
 { "VIDIOC_S_DV_TIMINGS", 0xc0845657 },
 { "VIDIOC_G_DV_TIMINGS", 0xc0845658 },
@@ -2557,8 +2742,12 @@
 { "SNDRV_SEQ_IOCTL_GET_NAMED_QUEUE", 0xc08c5336 },
 { "VIDIOC_DV_TIMINGS_CAP", 0xc0905664 },
 { "VIDIOC_SUBDEV_DV_TIMINGS_CAP", 0xc0905664 },
+{ "DK_CXLFLASH_ATTACH", 0xc090ca80 },
+{ "DK_CXLFLASH_VERIFY", 0xc090ca84 },
 { "VIDIOC_ENUM_DV_TIMINGS", 0xc0945662 },
 { "VIDIOC_SUBDEV_ENUM_DV_TIMINGS", 0xc0945662 },
+{ "DRM_IOCTL_VC4_SUBMIT_CL", 0xc0a06440 },
+{ "DRM_IOCTL_VC4_GET_HANG_STATE", 0xc0a06446 },
 { "SOUND_MIXER_GETLEVELS", 0xc0a44d74 },
 { "SOUND_MIXER_SETLEVELS", 0xc0a44d75 },
 { "SNDRV_SEQ_IOCTL_CREATE_PORT", 0xc0a45320 },
@@ -2585,6 +2774,7 @@
 { "SNDRV_CTL_IOCTL_ELEM_INFO", 0xc1105511 },
 { "SNDRV_CTL_IOCTL_ELEM_ADD", 0xc1105517 },
 { "SNDRV_CTL_IOCTL_ELEM_REPLACE", 0xc1105518 },
+{ "DRM_IOCTL_AMDGPU_GEM_METADATA", 0xc11c6446 },
 { "SNDRV_CTL_IOCTL_PCM_INFO", 0xc1205531 },
 { "DM_VERSION", 0xc138fd00 },
 { "DM_REMOVE_ALL", 0xc138fd01 },
@@ -2617,6 +2807,7 @@
 { "SNDCTL_COPR_SENDMSG", 0xcfa44308 },
 { "SNDCTL_SYNTH_CONTROL", 0xcfa45115 },
 { "SNDCTL_COPR_LOAD", 0xcfb04301 },
+{ "NVM_INFO", 0xd0004c20 },
 { "BTRFS_IOC_TREE_SEARCH", 0xd0009411 },
 { "BTRFS_IOC_INO_LOOKUP", 0xd0009412 },
 { "BTRFS_IOC_DEV_INFO", 0xd000941e },
diff --git a/ioctlent2.h b/ioctlent2.h
index e7a3e8e..06e2e7f 100644
--- a/ioctlent2.h
+++ b/ioctlent2.h
@@ -83,6 +83,7 @@
 { "STOP_ARRAY", 0x00000932 },
 { "STOP_ARRAY_RO", 0x00000933 },
 { "RESTART_ARRAY_RW", 0x00000934 },
+{ "CLUSTERED_DISK_NACK", 0x00000935 },
 { "BLKROSET", 0x0000125d },
 { "BLKROGET", 0x0000125e },
 { "BLKRRPART", 0x0000125f },
@@ -108,6 +109,7 @@
 { "BLKSECDISCARD", 0x0000127d },
 { "BLKROTATIONAL", 0x0000127e },
 { "BLKZEROOUT", 0x0000127f },
+{ "BLKDAXGET", 0x00001281 },
 { "IB_USER_MAD_ENABLE_PKEY", 0x00001b03 },
 { "SG_SET_TIMEOUT", 0x00002201 },
 { "SG_GET_TIMEOUT", 0x00002202 },
@@ -169,6 +171,10 @@
 { "VFIO_IOMMU_UNMAP_DMA", 0x00003b72 },
 { "VFIO_IOMMU_ENABLE", 0x00003b73 },
 { "VFIO_IOMMU_DISABLE", 0x00003b74 },
+{ "VFIO_IOMMU_SPAPR_REGISTER_MEMORY", 0x00003b75 },
+{ "VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY", 0x00003b76 },
+{ "VFIO_IOMMU_SPAPR_TCE_CREATE", 0x00003b77 },
+{ "VFIO_IOMMU_SPAPR_TCE_REMOVE", 0x00003b78 },
 { "VFIO_EEH_PE_OP", 0x00003b79 },
 { "AGPIOC_ACQUIRE", 0x00004101 },
 { "APM_IOC_STANDBY", 0x00004101 },
@@ -317,11 +323,14 @@
 { "LOOP_GET_STATUS64", 0x00004c05 },
 { "LOOP_CHANGE_FD", 0x00004c06 },
 { "LOOP_SET_CAPACITY", 0x00004c07 },
+{ "LOOP_SET_DIRECT_IO", 0x00004c08 },
 { "LOOP_CTL_ADD", 0x00004c80 },
 { "LOOP_CTL_REMOVE", 0x00004c81 },
 { "LOOP_CTL_GET_FREE", 0x00004c82 },
 { "MTDFILEMODE", 0x00004d13 },
 { "NVME_IOCTL_ID", 0x00004e40 },
+{ "NVME_IOCTL_RESET", 0x00004e44 },
+{ "NVME_IOCTL_SUBSYS_RESET", 0x00004e45 },
 { "UBI_IOCVOLRMBLK", 0x00004f08 },
 { "OMAPFB_SYNC_GFX", 0x00004f25 },
 { "OMAPFB_VSYNC", 0x00004f26 },
@@ -490,7 +499,8 @@
 { "USBTMC_IOCTL_ABORT_BULK_IN", 0x00005b04 },
 { "USBTMC_IOCTL_CLEAR_OUT_HALT", 0x00005b06 },
 { "USBTMC_IOCTL_CLEAR_IN_HALT", 0x00005b07 },
-{ "ANDROID_ALARM_WAIT", 0x00006101 },
+{ "USBTMC488_IOCTL_GOTO_LOCAL", 0x00005b14 },
+{ "USBTMC488_IOCTL_LOCAL_LOCKOUT", 0x00005b15 },
 { "NS_ADJBUFLEV", 0x00006163 },
 { "SIOCSIFATMTCP", 0x00006180 },
 { "ATMTCP_CREATE", 0x0000618e },
@@ -514,6 +524,8 @@
 { "BC_ENTER_LOOPER", 0x0000630c },
 { "BC_EXIT_LOOPER", 0x0000630d },
 { "CHIOINITELEM", 0x00006311 },
+{ "KCOV_ENABLE", 0x00006364 },
+{ "KCOV_DISABLE", 0x00006365 },
 { "DRM_IOCTL_SET_MASTER", 0x0000641e },
 { "DRM_IOCTL_DROP_MASTER", 0x0000641f },
 { "DRM_IOCTL_AGP_ACQUIRE", 0x00006430 },
@@ -846,15 +858,9 @@
 { "RAW_GETBIND", 0x0000ac01 },
 { "KVM_GET_API_VERSION", 0x0000ae00 },
 { "KVM_CREATE_VM", 0x0000ae01 },
-{ "LOGGER_GET_LOG_BUF_SIZE", 0x0000ae01 },
-{ "LOGGER_GET_LOG_LEN", 0x0000ae02 },
 { "KVM_CHECK_EXTENSION", 0x0000ae03 },
-{ "LOGGER_GET_NEXT_ENTRY_LEN", 0x0000ae03 },
 { "KVM_GET_VCPU_MMAP_SIZE", 0x0000ae04 },
-{ "LOGGER_FLUSH_LOG", 0x0000ae04 },
-{ "LOGGER_GET_VERSION", 0x0000ae05 },
 { "KVM_S390_ENABLE_SIE", 0x0000ae06 },
-{ "LOGGER_SET_VERSION", 0x0000ae06 },
 { "KVM_CREATE_VCPU", 0x0000ae41 },
 { "KVM_SET_NR_MMU_PAGES", 0x0000ae44 },
 { "KVM_GET_NR_MMU_PAGES", 0x0000ae45 },
@@ -869,6 +875,7 @@
 { "KVM_SET_TSC_KHZ", 0x0000aea2 },
 { "KVM_GET_TSC_KHZ", 0x0000aea3 },
 { "KVM_KVMCLOCK_CTRL", 0x0000aead },
+{ "KVM_SMI", 0x0000aeb7 },
 { "VHOST_SET_OWNER", 0x0000af01 },
 { "VHOST_RESET_OWNER", 0x0000af02 },
 { "PPPOEIOCDFWD", 0x0000b101 },
@@ -876,11 +883,17 @@
 { "IOCTL_EVTCHN_BIND_UNBOUND_PORT", 0x00044502 },
 { "IOCTL_EVTCHN_UNBIND", 0x00044503 },
 { "IOCTL_EVTCHN_NOTIFY", 0x00044504 },
+{ "IOCTL_GNTDEV_SET_MAX_GRANTS", 0x00044703 },
 { "IOCTL_EVTCHN_BIND_INTERDOMAIN", 0x00084501 },
-{ "SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER", 0x40005344 },
+{ "IOCTL_GNTDEV_GRANT_COPY", 0x00084708 },
+{ "IOCTL_GNTDEV_UNMAP_GRANT_REF", 0x00104701 },
+{ "IOCTL_GNTDEV_SET_UNMAP_NOTIFY", 0x00104707 },
+{ "IOCTL_GNTDEV_MAP_GRANT_REF", 0x00184700 },
+{ "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", 0x00184702 },
 { "MFB_SET_ALPHA", 0x40014d00 },
 { "MFB_SET_GAMMA", 0x40014d01 },
 { "MFB_SET_BRIGHTNESS", 0x40014d03 },
+{ "USBTMC488_IOCTL_REN_CONTROL", 0x40015b13 },
 { "SPI_IOC_WR_MODE", 0x40016b01 },
 { "SPI_IOC_WR_LSB_FIRST", 0x40016b02 },
 { "SPI_IOC_WR_BITS_PER_WORD", 0x40016b03 },
@@ -894,6 +907,7 @@
 { "SONYPI_IOCSFAN", 0x4001760b },
 { "ATM_SETBACKEND", 0x400261f2 },
 { "ATM_NEWBACKENDIF", 0x400261f3 },
+{ "RIO_MPORT_MAINT_HDID_SET", 0x40026d01 },
 { "NCP_IOC_GETMOUNTUID", 0x40026e02 },
 { "AUDIO_SET_ATTRIBUTES", 0x40026f11 },
 { "DMX_ADD_PID", 0x40026f33 },
@@ -910,11 +924,9 @@
 { "FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE", 0x4004230e },
 { "FW_CDEV_IOC_FLUSH_ISO", 0x40042318 },
 { "PERF_EVENT_IOC_SET_FILTER", 0x40042406 },
-{ "BLKI2OSRSTRAT", 0x40043203 },
-{ "BLKI2OSWSTRAT", 0x40043204 },
+{ "PERF_EVENT_IOC_SET_BPF", 0x40042408 },
 { "SNAPSHOT_CREATE_IMAGE", 0x40043311 },
 { "PTP_ENABLE_PPS", 0x40043d04 },
-{ "SYNC_IOC_WAIT", 0x40043e00 },
 { "FBIO_RADEON_SET_MIRROR", 0x40044004 },
 { "SNDRV_PCM_IOCTL_TSTAMP", 0x40044102 },
 { "AGPIOC_SETUP", 0x40044103 },
@@ -930,6 +942,7 @@
 { "SNDRV_PCM_IOCTL_LINK", 0x40044160 },
 { "PMU_IOC_SET_BACKLIGHT", 0x40044202 },
 { "CCISS_REGNEWDISK", 0x4004420d },
+{ "CS_SET_WAKELINE", 0x40044317 },
 { "EVIOCRMFF", 0x40044581 },
 { "EVIOCGRAB", 0x40044590 },
 { "EVIOCREVOKE", 0x40044591 },
@@ -941,6 +954,7 @@
 { "FBIPUT_VSYNC", 0x4004460a },
 { "FBIO_WAITFORVSYNC", 0x40044620 },
 { "SSTFB_SET_VGAPASS", 0x400446dd },
+{ "IOCTL_MEI_NOTIFY_SET", 0x40044802 },
 { "HIDIOCSFLAG", 0x4004480f },
 { "SNDRV_EMU10K1_IOCTL_TRAM_SETUP", 0x40044820 },
 { "SNDRV_DM_FM_IOCTL_SET_MODE", 0x40044825 },
@@ -1005,8 +1019,11 @@
 { "TUNSETQUEUE", 0x400454d9 },
 { "TUNSETIFINDEX", 0x400454da },
 { "TUNSETVNETLE", 0x400454dc },
+{ "TUNSETVNETBE", 0x400454de },
+{ "NCIUARTSETDRIVER", 0x40045500 },
 { "USBDEVFS_REAPURB", 0x4004550c },
 { "USBDEVFS_REAPURBNDELAY", 0x4004550d },
+{ "USBDEVFS_DROP_PRIVILEGES", 0x4004551e },
 { "SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE", 0x40045532 },
 { "SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE", 0x40045542 },
 { "UI_SET_EVBIT", 0x40045564 },
@@ -1025,6 +1042,7 @@
 { "VIDIOC_STREAMOFF", 0x40045613 },
 { "VIDIOC_S_PRIORITY", 0x40045644 },
 { "IVTV_IOC_PASSTHROUGH_MODE", 0x400456c1 },
+{ "VIDIOC_AM437X_CCDC_CFG", 0x400456c1 },
 { "VPFE_CMD_S_CCDC_RAW_PARAMS", 0x400456c1 },
 { "SW_SYNC_IOC_INC", 0x40045701 },
 { "SNDRV_RAWMIDI_IOCTL_DROP", 0x40045730 },
@@ -1082,8 +1100,8 @@
 { "LIRC_SET_WIDEBAND_RECEIVER", 0x40046923 },
 { "SPI_IOC_WR_MAX_SPEED_HZ", 0x40046b04 },
 { "SPI_IOC_WR_MODE32", 0x40046b05 },
-{ "MSMFB_GRP_DISP", 0x40046d01 },
-{ "MSMFB_BLIT", 0x40046d02 },
+{ "RIO_MPORT_MAINT_COMPTAG_SET", 0x40046d02 },
+{ "RIO_SET_EVENT_MASK", 0x40046d0d },
 { "NCP_IOC_GETMOUNTUID2", 0x40046e02 },
 { "NCP_IOC_SET_SIGN_WANTED", 0x40046e06 },
 { "NCP_IOC_GETDENTRYTTL", 0x40046e0c },
@@ -1146,6 +1164,7 @@
 { "IXJCTL_INTERCOM_START", 0x400471fd },
 { "IXJCTL_INTERCOM_STOP", 0x400471fe },
 { "FAT_IOCTL_SET_ATTRIBUTES", 0x40047211 },
+{ "SCIF_LISTEN", 0x40047302 },
 { "PPPIOCATTCHAN", 0x40047438 },
 { "PPPIOCCONNECT", 0x4004743a },
 { "PPPIOCSMRRU", 0x4004743b },
@@ -1173,6 +1192,7 @@
 { "SIOCSNETADDR", 0x400489e0 },
 { "AUTOFS_IOC_EXPIRE_MULTI", 0x40049366 },
 { "BTRFS_IOC_CLONE", 0x40049409 },
+{ "FICLONE", 0x40049409 },
 { "BTRFS_IOC_BALANCE_CTL", 0x40049421 },
 { "KVM_S390_VCPU_FAULT", 0x4004ae52 },
 { "KVM_INTERRUPT", 0x4004ae86 },
@@ -1195,11 +1215,17 @@
 { "FE_DISEQC_SEND_MASTER_CMD", 0x40076f3f },
 { "FW_CDEV_IOC_RECEIVE_PHY_PACKETS", 0x40082316 },
 { "PERF_EVENT_IOC_PERIOD", 0x40082404 },
+{ "STP_SET_OPTIONS", 0x40082502 },
 { "CCISS_SETINTINFO", 0x40084203 },
 { "APEI_ERST_CLEAR_RECORD", 0x40084501 },
 { "EVIOCSREP", 0x40084503 },
 { "EVIOCSKEYCODE", 0x40084504 },
 { "SNDRV_SB_CSP_IOCTL_START", 0x40084813 },
+{ "AMDKFD_IOC_DESTROY_EVENT", 0x40084b09 },
+{ "AMDKFD_IOC_SET_EVENT", 0x40084b0a },
+{ "AMDKFD_IOC_RESET_EVENT", 0x40084b0b },
+{ "AMDKFD_IOC_DBG_REGISTER", 0x40084b0d },
+{ "AMDKFD_IOC_DBG_UNREGISTER", 0x40084b0e },
 { "MEMERASE", 0x40084d02 },
 { "MFB_SET_AOID", 0x40084d04 },
 { "MEMLOCK", 0x40084d05 },
@@ -1220,6 +1246,7 @@
 { "VIDIOC_S_STD", 0x40085618 },
 { "ATM_GETNAMES", 0x40086183 },
 { "ATM_ADDPARTY", 0x400861f4 },
+{ "DMA_BUF_IOCTL_SYNC", 0x40086200 },
 { "BINDER_SET_IDLE_TIMEOUT", 0x40086203 },
 { "BC_FREE_BUFFER", 0x40086303 },
 { "CHIOGSTATUS", 0x40086308 },
@@ -1245,6 +1272,7 @@
 { "DRM_IOCTL_RADEON_CP_STOP", 0x40086442 },
 { "DRM_IOCTL_SAVAGE_BCI_EVENT_WAIT", 0x40086443 },
 { "DRM_IOCTL_OMAP_GEM_CPU_PREP", 0x40086444 },
+{ "DRM_IOCTL_ETNAVIV_GEM_CPU_FINI", 0x40086445 },
 { "DRM_IOCTL_QXL_CLIENTCAP", 0x40086445 },
 { "DRM_IOCTL_I915_SETPARAM", 0x40086447 },
 { "DRM_IOCTL_VIA_CMDBUFFER", 0x40086448 },
@@ -1260,6 +1288,11 @@
 { "DRM_IOCTL_I915_GEM_SET_CACHING", 0x4008646f },
 { "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", 0x40086482 },
 { "MTIOCTOP", 0x40086d01 },
+{ "RIO_ENABLE_DOORBELL_RANGE", 0x40086d09 },
+{ "RIO_DISABLE_DOORBELL_RANGE", 0x40086d0a },
+{ "RIO_UNMAP_INBOUND", 0x40086d12 },
+{ "RIO_FREE_DMA", 0x40086d14 },
+{ "RIO_WAIT_FOR_ASYNC", 0x40086d16 },
 { "NILFS_IOCTL_DELETE_CHECKPOINT", 0x40086e81 },
 { "NILFS_IOCTL_RESIZE", 0x40086e8b },
 { "AUDIO_SET_MIXER", 0x40086f0e },
@@ -1291,9 +1324,13 @@
 { "VHOST_SET_LOG_BASE", 0x4008af04 },
 { "VHOST_SET_VRING_NUM", 0x4008af10 },
 { "VHOST_SET_VRING_BASE", 0x4008af12 },
+{ "VHOST_SET_VRING_ENDIAN", 0x4008af13 },
+{ "VHOST_GET_VRING_ENDIAN", 0x4008af14 },
 { "VHOST_SET_VRING_KICK", 0x4008af20 },
 { "VHOST_SET_VRING_CALL", 0x4008af21 },
 { "VHOST_SET_VRING_ERR", 0x4008af22 },
+{ "VHOST_SET_VRING_BUSYLOOP_TIMEOUT", 0x4008af23 },
+{ "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", 0x4008af24 },
 { "VHOST_NET_SET_BACKEND", 0x4008af30 },
 { "SNDRV_DM_FM_IOCTL_SET_PARAMS", 0x40094824 },
 { "FDFMTTRK", 0x400c0248 },
@@ -1350,6 +1387,7 @@
 { "DRM_IOCTL_RADEON_INIT_HEAP", 0x400c6455 },
 { "DRM_IOCTL_RADEON_SURF_ALLOC", 0x400c645a },
 { "DRM_IOCTL_I915_GEM_SET_DOMAIN", 0x400c645f },
+{ "FS_IOC_GET_ENCRYPTION_POLICY", 0x400c6615 },
 { "I2OEVTREG", 0x400c690a },
 { "HSC_SET_RX", 0x400c6b13 },
 { "HSC_GET_RX", 0x400c6b14 },
@@ -1363,6 +1401,10 @@
 { "FW_CDEV_IOC_SET_ISO_CHANNELS", 0x40102317 },
 { "PTP_EXTTS_REQUEST", 0x40103d02 },
 { "CCISS_SETNODENAME", 0x40104205 },
+{ "EVIOCSMASK", 0x40104593 },
+{ "SNDRV_USB_STREAM_IOCTL_SET_PARAMS", 0x40104890 },
+{ "AMDKFD_IOC_DBG_ADDRESS_WATCH", 0x40104b0f },
+{ "AMDKFD_IOC_DBG_WAVE_CONTROL", 0x40104b10 },
 { "MTRRIOC_ADD_ENTRY", 0x40104d00 },
 { "MTRRIOC_SET_ENTRY", 0x40104d01 },
 { "MTRRIOC_DEL_ENTRY", 0x40104d02 },
@@ -1375,7 +1417,6 @@
 { "UBI_IOCSETVOLPROP", 0x40104f06 },
 { "OMAPFB_SET_COLOR_KEY", 0x40104f32 },
 { "OMAPFB_GET_COLOR_KEY", 0x40104f33 },
-{ "ANDROID_ALARM_SET_RTC", 0x40106105 },
 { "BC_INCREFS_DONE", 0x40106308 },
 { "BC_ACQUIRE_DONE", 0x40106309 },
 { "DRM_IOCTL_SET_CLIENT_CAP", 0x4010640d },
@@ -1393,14 +1434,20 @@
 { "DRM_IOCTL_I915_GEM_INIT", 0x40106453 },
 { "DRM_IOCTL_SIS_AGP_FREE", 0x40106455 },
 { "DRM_IOCTL_RADEON_SETPARAM", 0x40106459 },
+{ "FS_IOC_GET_ENCRYPTION_PWSALT", 0x40106614 },
 { "HSC_SET_TX", 0x40106b15 },
 { "HSC_GET_TX", 0x40106b16 },
+{ "RIO_ENABLE_PORTWRITE_RANGE", 0x40106d0b },
+{ "RIO_DISABLE_PORTWRITE_RANGE", 0x40106d0c },
 { "MGSL_IOCSGPIO", 0x40106d10 },
 { "NILFS_IOCTL_CHANGE_CPMODE", 0x40106e80 },
 { "NILFS_IOCTL_SET_ALLOC_RANGE", 0x40106e8c },
 { "VIDEO_SET_HIGHLIGHT", 0x40106f27 },
 { "CA_SET_DESCR", 0x40106f86 },
 { "PPSETTIME", 0x40107096 },
+{ "IOC_PR_RESERVE", 0x401070c9 },
+{ "IOC_PR_RELEASE", 0x401070ca },
+{ "IOC_PR_CLEAR", 0x401070cd },
 { "BTRFS_IOC_QGROUP_CREATE", 0x4010942a },
 { "GENWQE_WRITE_REG64", 0x4010a51f },
 { "GENWQE_WRITE_REG32", 0x4010a521 },
@@ -1441,6 +1488,7 @@
 { "DRM_IOCTL_UPDATE_DRAW", 0x4018643f },
 { "DRM_IOCTL_I915_BATCHBUFFER", 0x40186443 },
 { "DRM_IOCTL_QXL_UPDATE_AREA", 0x40186443 },
+{ "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", 0x40186444 },
 { "DRM_IOCTL_MSM_GEM_CPU_PREP", 0x40186444 },
 { "DRM_IOCTL_MSM_WAIT_FENCE", 0x40186447 },
 { "DRM_IOCTL_RADEON_CLEAR", 0x40186448 },
@@ -1448,8 +1496,13 @@
 { "DRM_IOCTL_R128_BLIT", 0x4018644b },
 { "DRM_IOCTL_R128_DEPTH", 0x4018644c },
 { "DRM_IOCTL_RADEON_VERTEX2", 0x4018644f },
+{ "RIO_MPORT_MAINT_WRITE_LOCAL", 0x40186d06 },
+{ "RIO_MPORT_MAINT_WRITE_REMOTE", 0x40186d08 },
 { "NILFS_IOCTL_SET_SUINFO", 0x40186e8d },
 { "UBI_IOCATT", 0x40186f40 },
+{ "IOC_PR_REGISTER", 0x401870c8 },
+{ "IOC_PR_PREEMPT", 0x401870cb },
+{ "IOC_PR_PREEMPT_ABORT", 0x401870cc },
 { "BTRFS_IOC_QGROUP_ASSIGN", 0x40189429 },
 { "KVM_SET_MEMORY_REGION", 0x4018ae40 },
 { "KVM_S390_UCAS_MAP", 0x4018ae50 },
@@ -1460,27 +1513,42 @@
 { "MBXFB_IOCS_ALPHA", 0x4018f402 },
 { "FDSETPRM", 0x401c0242 },
 { "FDDEFPRM", 0x401c0243 },
+{ "UI_ABS_SETUP", 0x401c5504 },
+{ "FS_IOC_FSSETXATTR", 0x401c5820 },
 { "BR2684_SETFILT", 0x401c6190 },
 { "CHIOEXCHANGE", 0x401c6302 },
 { "OSD_SEND_CMD", 0x401c6fa0 },
 { "RTC_PLL_SET", 0x401c7012 },
+{ "CS_CONFIG_BUFS", 0x4020431f },
 { "ION_IOC_TEST_DMA_MAPPING", 0x402049f1 },
 { "ION_IOC_TEST_KERNEL_MAPPING", 0x402049f2 },
 { "AMDKFD_IOC_SET_MEMORY_POLICY", 0x40204b04 },
 { "VIDIOC_SUBSCRIBE_EVENT", 0x4020565a },
 { "VIDIOC_UNSUBSCRIBE_EVENT", 0x4020565b },
+{ "DRM_IOCTL_VIRTGPU_EXECBUFFER", 0x40206442 },
+{ "DRM_IOCTL_AMDGPU_INFO", 0x40206445 },
+{ "DRM_IOCTL_ETNAVIV_WAIT_FENCE", 0x40206447 },
+{ "DRM_IOCTL_ETNAVIV_GEM_WAIT", 0x40206449 },
 { "DRM_IOCTL_I915_GEM_PREAD", 0x4020645c },
 { "DRM_IOCTL_I915_GEM_PWRITE", 0x4020645d },
 { "MGSL_IOCSPARAMS", 0x40206d00 },
+{ "RIO_DEV_ADD", 0x40206d17 },
+{ "RIO_DEV_DEL", 0x40206d18 },
 { "PPPIOCSXASYNCMAP", 0x4020744f },
 { "BTRFS_IOC_CLONE_RANGE", 0x4020940d },
+{ "FICLONERANGE", 0x4020940d },
 { "KVM_SET_MEMORY_ALIAS", 0x4020ae43 },
 { "KVM_SET_USER_MEMORY_REGION", 0x4020ae46 },
 { "KVM_IRQFD", 0x4020ae76 },
 { "KVM_SIGNAL_MSI", 0x4020aea5 },
+{ "KVM_CREATE_SPAPR_TCE_64", 0x4020aea8 },
 { "KVM_PPC_GET_HTAB_FD", 0x4020aeaa },
 { "KVM_ARM_VCPU_INIT", 0x4020aeae },
+{ "KVM_S390_SET_IRQ_STATE", 0x4020aeb5 },
+{ "KVM_S390_GET_IRQ_STATE", 0x4020aeb6 },
 { "SNDRV_COMPRESS_SET_METADATA", 0x40244314 },
+{ "NVM_DEV_REMOVE", 0x40244c23 },
+{ "NVM_DEV_FACTORY", 0x40244c25 },
 { "DRM_IOCTL_SAVAGE_BCI_CMDBUF", 0x40246441 },
 { "JSIOCSCORR", 0x40246a21 },
 { "FE_SET_FRONTEND", 0x40246f4c },
@@ -1491,12 +1559,15 @@
 { "FW_CDEV_IOC_SEND_STREAM_PACKET", 0x40282313 },
 { "EVIOCSKEYCODE_V2", 0x40284504 },
 { "SNDCTL_FM_LOAD_INSTR", 0x40285107 },
+{ "DRM_IOCTL_AMDGPU_GEM_VA", 0x40286448 },
 { "DRM_IOCTL_VIA_DMA_BLIT", 0x4028644e },
 { "DRM_IOCTL_I915_GEM_EXECBUFFER", 0x40286454 },
+{ "RIO_UNMAP_OUTBOUND", 0x40286d10 },
 { "PHN_SETREGS", 0x40287008 },
 { "RTC_WKALM_SET", 0x4028700f },
 { "VHOST_SET_VRING_ADDR", 0x4028af11 },
 { "EVIOCSFF", 0x402c4580 },
+{ "NVM_DEV_INIT", 0x402c4c24 },
 { "SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", 0x402c5342 },
 { "TCSETS2", 0x402c542b },
 { "TCSETSW2", 0x402c542c },
@@ -1538,7 +1609,12 @@
 { "KVM_X86_SET_MCE", 0x4040ae9e },
 { "KVM_SET_VCPU_EVENTS", 0x4040aea0 },
 { "KVM_ASSIGN_SET_INTX_MASK", 0x4040aea4 },
+{ "KVM_S390_MEM_OP", 0x4040aeb1 },
+{ "KVM_S390_GET_SKEYS", 0x4040aeb2 },
+{ "KVM_S390_SET_SKEYS", 0x4040aeb3 },
 { "CXL_IOCTL_START_WORK", 0x4040ca00 },
+{ "CXL_IOCTL_DOWNLOAD_IMAGE", 0x4040ca0a },
+{ "CXL_IOCTL_VALIDATE_IMAGE", 0x4040ca0b },
 { "OMAPFB_SETUP_PLANE", 0x40444f34 },
 { "OMAPFB_QUERY_PLANE", 0x40444f35 },
 { "OMAPFB_UPDATE_WINDOW", 0x40444f36 },
@@ -1548,6 +1624,7 @@
 { "SNDRV_EMU10K1_IOCTL_PCM_POKE", 0x40484830 },
 { "BTRFS_IOC_SEND", 0x40489426 },
 { "KVM_SET_GUEST_DEBUG", 0x4048ae9b },
+{ "KVM_S390_IRQ", 0x4048aeb4 },
 { "GSMIOC_SETCONF", 0x404c4701 },
 { "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", 0x404c534a },
 { "SNDRV_HWDEP_IOCTL_DSP_LOAD", 0x40504803 },
@@ -1560,6 +1637,7 @@
 { "FDSETDRVPRM", 0x40580290 },
 { "SNDRV_SEQ_IOCTL_SET_CLIENT_POOL", 0x4058534c },
 { "DRM_IOCTL_R128_INIT", 0x40586440 },
+{ "UI_DEV_SETUP", 0x405c5503 },
 { "DRM_IOCTL_MGA_INIT", 0x405c6440 },
 { "PTP_PIN_SETFUNC", 0x40603d07 },
 { "SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER", 0x40605346 },
@@ -1568,11 +1646,13 @@
 { "CHIOGELEM", 0x406c6310 },
 { "KVM_SET_PIT2", 0x4070aea0 },
 { "NILFS_IOCTL_CLEAN_SEGMENTS", 0x40786e88 },
+{ "NVM_DEV_CREATE", 0x40804c22 },
 { "UBI_IOCVOLCRBLK", 0x40804f07 },
 { "KVM_PPC_GET_PVINFO", 0x4080aea1 },
 { "KVM_SET_DEBUGREGS", 0x4080aea2 },
 { "KVM_PPC_RTAS_DEFINE_TOKEN", 0x4080aeac },
 { "SNDRV_COMPRESS_SET_PARAMS", 0x40844312 },
+{ "V4L2_DEVICE_NOTIFY_EVENT", 0x40887602 },
 { "SNDRV_SEQ_IOCTL_DELETE_QUEUE", 0x408c5333 },
 { "VIDIOC_S_JPEGCOMP", 0x408c563e },
 { "KVM_SET_REGS", 0x4090ae82 },
@@ -1610,6 +1690,8 @@
 { "SNDRV_SB_CSP_IOCTL_LOAD_CODE", 0x70124811 },
 { "MFB_GET_ALPHA", 0x80014d00 },
 { "MFB_GET_GAMMA", 0x80014d01 },
+{ "USBTMC488_IOCTL_GET_CAPS", 0x80015b11 },
+{ "USBTMC488_IOCTL_READ_STB", 0x80015b12 },
 { "GADGET_GET_PRINTER_STATUS", 0x80016721 },
 { "JSIOCGAXES", 0x80016a11 },
 { "JSIOCGBUTTONS", 0x80016a12 },
@@ -1640,8 +1722,6 @@
 { "BLKBSZGET", 0x80041270 },
 { "BLKGETSIZE64", 0x80041272 },
 { "PERF_EVENT_IOC_ID", 0x80042407 },
-{ "BLKI2OGRSTRAT", 0x80043201 },
-{ "BLKI2OGWSTRAT", 0x80043202 },
 { "FBIO_RADEON_GET_MIRROR", 0x80044003 },
 { "AGPIOC_INFO", 0x80044100 },
 { "SNDRV_PCM_IOCTL_PVERSION", 0x80044100 },
@@ -1656,6 +1736,8 @@
 { "CCISS_GETFIRMVER", 0x80044208 },
 { "CCISS_GETDRIVVER", 0x80044209 },
 { "SNDRV_COMPRESS_IOCTL_VERSION", 0x80044300 },
+{ "CS_GET_STATE", 0x80044315 },
+{ "CS_GET_IF_VERSION", 0x8004431e },
 { "CAPI_GET_FLAGS", 0x80044323 },
 { "CAPI_SET_FLAGS", 0x80044324 },
 { "CAPI_CLR_FLAGS", 0x80044325 },
@@ -1672,6 +1754,7 @@
 { "SNDRV_HWDEP_IOCTL_PVERSION", 0x80044800 },
 { "HIDIOCGRDESCSIZE", 0x80044801 },
 { "HIDIOCGVERSION", 0x80044801 },
+{ "IOCTL_MEI_NOTIFY_GET", 0x80044803 },
 { "HIDIOCGFLAG", 0x8004480e },
 { "HDA_IOCTL_PVERSION", 0x80044810 },
 { "SNDRV_EMU10K1_IOCTL_PVERSION", 0x80044840 },
@@ -1733,6 +1816,7 @@
 { "TUNGETSNDBUF", 0x800454d3 },
 { "TUNGETVNETHDRSZ", 0x800454d7 },
 { "TUNGETVNETLE", 0x800454dd },
+{ "TUNGETVNETBE", 0x800454df },
 { "SNDRV_CTL_IOCTL_PVERSION", 0x80045500 },
 { "USBDEVFS_RESETEP", 0x80045503 },
 { "USBDEVFS_SETCONFIGURATION", 0x80045505 },
@@ -1760,6 +1844,7 @@
 { "SONET_GETDIAG", 0x80046114 },
 { "SONET_GETFRAMING", 0x80046116 },
 { "CM_IOCGSTATUS", 0x80046300 },
+{ "KCOV_INIT_TRACE", 0x80046301 },
 { "CHIOGPICKER", 0x80046304 },
 { "DRM_IOCTL_GET_MAGIC", 0x80046402 },
 { "DRM_IOCTL_I915_GET_VBLANK_PIPE", 0x8004644e },
@@ -1806,7 +1891,9 @@
 { "MMTIMER_GETRES", 0x80046d01 },
 { "MMTIMER_GETFREQ", 0x80046d02 },
 { "MTIOCPOS", 0x80046d03 },
+{ "RIO_MPORT_MAINT_PORT_IDX_GET", 0x80046d03 },
 { "MMTIMER_GETCOUNTER", 0x80046d09 },
+{ "RIO_GET_EVENT_MASK", 0x80046d0e },
 { "NCP_IOC_SIGN_WANTED", 0x80046e06 },
 { "NCP_IOC_SETDENTRYTTL", 0x80046e0c },
 { "MATROXFB_GET_OUTPUT_CONNECTION", 0x80046ef8 },
@@ -1871,6 +1958,7 @@
 { "GENWQE_GET_CARD_STATE", 0x8004a524 },
 { "KVM_GET_MP_STATE", 0x8004ae98 },
 { "CXL_IOCTL_GET_PROCESS_ELEMENT", 0x8004ca01 },
+{ "FUSE_DEV_IOC_CLONE", 0x8004e500 },
 { "SISFB_GET_INFO_SIZE", 0x8004f300 },
 { "SISFB_GET_VBRSTATUS", 0x8004f302 },
 { "SISFB_GET_AUTOMAXIMIZE", 0x8004f303 },
@@ -1931,6 +2019,7 @@
 { "OMAPFB_GET_CAPS", 0x800c4f2a },
 { "SNDCTL_DSP_GETIPTR", 0x800c5011 },
 { "SNDCTL_DSP_GETOPTR", 0x800c5012 },
+{ "FS_IOC_SET_ENCRYPTION_POLICY", 0x800c6613 },
 { "HPET_INFO", 0x800c6803 },
 { "IPMICTL_REGISTER_FOR_CMD_CHANS", 0x800c691c },
 { "IPMICTL_UNREGISTER_FOR_CMD_CHANS", 0x800c691d },
@@ -1942,7 +2031,9 @@
 { "CA_GET_SLOT_INFO", 0x800c6f82 },
 { "FDGETDRVTYP", 0x8010020f },
 { "FW_CDEV_IOC_GET_CYCLE_TIMER", 0x8010230c },
+{ "STP_POLICY_ID_GET", 0x80102501 },
 { "CCISS_GETNODENAME", 0x80104204 },
+{ "EVIOCGMASK", 0x80104592 },
 { "SNDRV_HDSPM_IOCTL_GET_LTC", 0x80104846 },
 { "ECCGETSTATS", 0x80104d12 },
 { "OMAPFB_MEMORY_READ", 0x80104f3a },
@@ -1961,6 +2052,8 @@
 { "GENWQE_READ_REG64", 0x8010a51e },
 { "GENWQE_READ_REG32", 0x8010a520 },
 { "GENWQE_READ_REG16", 0x8010a522 },
+{ "UFFDIO_UNREGISTER", 0x8010aa01 },
+{ "UFFDIO_WAKE", 0x8010aa02 },
 { "FDGETMAXERRS", 0x8014020e },
 { "GET_DISK_INFO", 0x80140912 },
 { "SNDRV_COMPRESS_TSTAMP", 0x80144320 },
@@ -1972,6 +2065,8 @@
 { "SNDRV_PCM_IOCTL_CHANNEL_INFO", 0x80184132 },
 { "SNDRV_HDSPM_IOCTL_GET_CONFIG", 0x80184841 },
 { "IMSETDEVNAME", 0x80184947 },
+{ "RIO_MPORT_MAINT_READ_LOCAL", 0x80186d05 },
+{ "RIO_MPORT_MAINT_READ_REMOTE", 0x80186d07 },
 { "NCP_IOC_SIGN_INIT", 0x80186e05 },
 { "NILFS_IOCTL_GET_CPINFO", 0x80186e82 },
 { "NILFS_IOCTL_GET_CPSTAT", 0x80186e83 },
@@ -1982,6 +2077,7 @@
 { "FDGETPRM", 0x801c0204 },
 { "SNDRV_COMPRESS_AVAIL", 0x801c4321 },
 { "HIDIOCGDEVINFO", 0x801c4803 },
+{ "FS_IOC_FSGETXATTR", 0x801c581f },
 { "IPMICTL_SEND_COMMAND_SETTIME", 0x801c6915 },
 { "MTIOCGET", 0x801c6d02 },
 { "RTC_PLL_GET", 0x801c7011 },
@@ -2020,6 +2116,7 @@
 { "USBDEVFS_SUBMITURB", 0x802c550a },
 { "VIDIOC_G_FBUF", 0x802c560a },
 { "SOUND_OLD_MIXER_INFO", 0x80304d65 },
+{ "RIO_MPORT_GET_PROPERTIES", 0x80306d04 },
 { "NILFS_IOCTL_GET_SUSTAT", 0x80306e85 },
 { "BTRFS_IOC_QGROUP_LIMIT", 0x8030942b },
 { "KVM_GET_CLOCK", 0x8030ae7c },
@@ -2035,6 +2132,8 @@
 { "BTRFS_IOC_QUOTA_RESCAN_STATUS", 0x8040942d },
 { "KVM_ASSIGN_PCI_DEVICE", 0x8040ae69 },
 { "KVM_GET_VCPU_EVENTS", 0x8040ae9f },
+{ "CXL_IOCTL_GET_AFU_ID", 0x8040ca02 },
+{ "GPIO_GET_CHIPINFO_IOCTL", 0x8044b401 },
 { "GET_ARRAY_INFO", 0x80480911 },
 { "PPPIOCGL2TPSTATS", 0x80487436 },
 { "BTRFS_IOC_GET_SUPPORTED_FEATURES", 0x80489439 },
@@ -2094,10 +2193,10 @@
 { "SNDCTL_COPR_RCVMSG", 0x8fa44309 },
 { "GET_BITMAP_FILE", 0x90000915 },
 { "SNDRV_HDSP_IOCTL_GET_MIXER", 0x90004844 },
+{ "NVM_GET_DEVICES", 0x90004c21 },
 { "BTRFS_IOC_DEVICES_READY", 0x90009427 },
 { "KVM_GET_XSAVE", 0x9000aea4 },
 { "HIDIOCGRDESC", 0x90044802 },
-{ "SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER", 0xc0005343 },
 { "GADGET_SET_PRINTER_STATUS", 0xc0016722 },
 { "AGPIOC_ALLOCATE", 0xc0044106 },
 { "CAPI_GET_MANUFACTURER", 0xc0044306 },
@@ -2152,6 +2251,7 @@
 { "DRM_IOCTL_RADEON_IRQ_EMIT", 0xc0046456 },
 { "DRM_IOCTL_MODE_RMFB", 0xc00464af },
 { "DRM_IOCTL_MODE_DESTROY_DUMB", 0xc00464b4 },
+{ "DRM_IOCTL_MODE_DESTROYPROPBLOB", 0xc00464be },
 { "I8K_GET_SPEED", 0xc0046985 },
 { "I8K_GET_FAN", 0xc0046986 },
 { "I8K_SET_FAN", 0xc0046987 },
@@ -2167,8 +2267,8 @@
 { "MIC_VIRTIO_ADD_DEVICE", 0xc0047301 },
 { "MIC_VIRTIO_COPY_DESC", 0xc0047302 },
 { "MIC_VIRTIO_CONFIG_CHANGE", 0xc0047305 },
+{ "SCIF_FENCE_WAIT", 0xc0047310 },
 { "PPPIOCNEWUNIT", 0xc004743e },
-{ "TOSH_SMM", 0xc0047490 },
 { "MEYEIOC_SYNC", 0xc00476c3 },
 { "AUTOFS_IOC_SETTIMEOUT", 0xc0049364 },
 { "KVM_GET_MSR_INDEX_LIST", 0xc004ae02 },
@@ -2184,6 +2284,9 @@
 { "ION_IOC_CUSTOM", 0xc0084906 },
 { "ION_IOC_SYNC", 0xc0084907 },
 { "AMDKFD_IOC_DESTROY_QUEUE", 0xc0084b03 },
+{ "ND_IOCTL_DIMM_FLAGS", 0xc0084e03 },
+{ "ND_IOCTL_SET_CONFIG_DATA", 0xc0084e06 },
+{ "ND_IOCTL_VENDOR", 0xc0084e09 },
 { "SNDRV_CTL_IOCTL_TLV_READ", 0xc008551a },
 { "SNDRV_CTL_IOCTL_TLV_WRITE", 0xc008551b },
 { "SNDRV_CTL_IOCTL_TLV_COMMAND", 0xc008551c },
@@ -2199,13 +2302,14 @@
 { "DRM_IOCTL_RES_CTX", 0xc0086426 },
 { "DRM_IOCTL_SG_ALLOC", 0xc0086438 },
 { "DRM_IOCTL_QXL_ALLOC", 0xc0086440 },
-{ "DRM_IOCTL_TEGRA_GEM_MMAP", 0xc0086441 },
+{ "DRM_IOCTL_AMDGPU_GEM_MMAP", 0xc0086441 },
 { "DRM_IOCTL_SAVAGE_BCI_EVENT_EMIT", 0xc0086442 },
 { "DRM_IOCTL_TEGRA_SYNCPT_READ", 0xc0086442 },
 { "DRM_IOCTL_VIA_AGP_INIT", 0xc0086442 },
 { "DRM_IOCTL_TEGRA_SYNCPT_INCR", 0xc0086443 },
 { "DRM_IOCTL_VIA_FB_INIT", 0xc0086443 },
 { "DRM_IOCTL_I915_GETPARAM", 0xc0086446 },
+{ "DRM_IOCTL_VIRTGPU_WAIT", 0xc0086448 },
 { "DRM_IOCTL_MGA_GETPARAM", 0xc0086449 },
 { "DRM_IOCTL_TEGRA_GEM_SET_FLAGS", 0xc008644c },
 { "DRM_IOCTL_TEGRA_GEM_GET_FLAGS", 0xc008644d },
@@ -2222,6 +2326,9 @@
 { "DRM_IOCTL_EXYNOS_IPP_CMD_CTRL", 0xc0086473 },
 { "NCP_IOC_GETPRIVATEDATA", 0xc0086e0a },
 { "PHN_GETREG", 0xc0087005 },
+{ "SCIF_BIND", 0xc0087301 },
+{ "SCIF_CONNECT", 0xc0087303 },
+{ "SCIF_ACCEPTREG", 0xc0087305 },
 { "PPPIOCGNPMODE", 0xc008744c },
 { "KVM_GET_SUPPORTED_CPUID", 0xc008ae05 },
 { "KVM_GET_EMULATED_CPUID", 0xc008ae09 },
@@ -2233,10 +2340,14 @@
 { "FSL_HV_IOCTL_PARTITION_STOP", 0xc008af04 },
 { "FSL_HV_IOCTL_DOORBELL", 0xc008af06 },
 { "VHOST_GET_VRING_BASE", 0xc008af12 },
+{ "MMC_IOC_MULTI_CMD", 0xc008b301 },
 { "HIDIOCGREPORTINFO", 0xc00c4809 },
 { "SNDRV_EMU10K1_IOCTL_TRAM_PEEK", 0xc00c4822 },
 { "MEMWRITEOOB", 0xc00c4d03 },
 { "MEMREADOOB", 0xc00c4d04 },
+{ "ND_IOCTL_SMART_THRESHOLD", 0xc00c4e02 },
+{ "ND_IOCTL_GET_CONFIG_SIZE", 0xc00c4e04 },
+{ "ND_IOCTL_GET_CONFIG_DATA", 0xc00c4e05 },
 { "SNDCTL_SYNTH_REMOVESAMPLE", 0xc00c5116 },
 { "USBDEVFS_IOCTL", 0xc00c5512 },
 { "UI_BEGIN_FF_ERASE", 0xc00c55ca },
@@ -2257,6 +2368,7 @@
 { "KVM_CREATE_DEVICE", 0xc00caee0 },
 { "FSL_HV_IOCTL_PARTITION_GET_STATUS", 0xc00caf02 },
 { "MBXFB_IOCX_REG", 0xc00cf405 },
+{ "STP_POLICY_ID_SET", 0xc0102500 },
 { "CAPI_GET_VERSION", 0xc0104307 },
 { "GIGASET_VERSION", 0xc0104703 },
 { "IOCTL_MEI_CONNECT_CLIENT", 0xc0104801 },
@@ -2273,21 +2385,35 @@
 { "DRM_IOCTL_GET_CAP", 0xc010640c },
 { "DRM_IOCTL_AGP_ALLOC", 0xc0106434 },
 { "DRM_IOCTL_WAIT_VBLANK", 0xc010643a },
+{ "DRM_IOCTL_ETNAVIV_GET_PARAM", 0xc0106440 },
 { "DRM_IOCTL_EXYNOS_GEM_CREATE", 0xc0106440 },
 { "DRM_IOCTL_MSM_GET_PARAM", 0xc0106440 },
 { "DRM_IOCTL_OMAP_GET_PARAM", 0xc0106440 },
 { "DRM_IOCTL_TEGRA_GEM_CREATE", 0xc0106440 },
+{ "DRM_IOCTL_EXYNOS_GEM_MAP", 0xc0106441 },
 { "DRM_IOCTL_QXL_MAP", 0xc0106441 },
+{ "DRM_IOCTL_TEGRA_GEM_MMAP", 0xc0106441 },
+{ "DRM_IOCTL_VC4_WAIT_SEQNO", 0xc0106441 },
+{ "DRM_IOCTL_VIRTGPU_MAP", 0xc0106441 },
+{ "DRM_IOCTL_AMDGPU_CTX", 0xc0106442 },
+{ "DRM_IOCTL_ETNAVIV_GEM_NEW", 0xc0106442 },
 { "DRM_IOCTL_MSM_GEM_NEW", 0xc0106442 },
+{ "DRM_IOCTL_VC4_WAIT_BO", 0xc0106442 },
+{ "DRM_IOCTL_ETNAVIV_GEM_INFO", 0xc0106443 },
 { "DRM_IOCTL_MSM_GEM_INFO", 0xc0106443 },
 { "DRM_IOCTL_OMAP_GEM_NEW", 0xc0106443 },
+{ "DRM_IOCTL_VC4_CREATE_BO", 0xc0106443 },
+{ "DRM_IOCTL_VIRTGPU_GETPARAM", 0xc0106443 },
 { "DRM_IOCTL_EXYNOS_GEM_GET", 0xc0106444 },
 { "DRM_IOCTL_QXL_GETPARAM", 0xc0106444 },
 { "DRM_IOCTL_SIS_FB_ALLOC", 0xc0106444 },
 { "DRM_IOCTL_TEGRA_SYNCPT_WAIT", 0xc0106444 },
+{ "DRM_IOCTL_VC4_MMAP_BO", 0xc0106444 },
 { "DRM_IOCTL_I810_GETBUF", 0xc0106445 },
 { "DRM_IOCTL_TEGRA_OPEN_CHANNEL", 0xc0106445 },
+{ "DRM_IOCTL_VIRTGPU_RESOURCE_INFO", 0xc0106445 },
 { "DRM_IOCTL_TEGRA_CLOSE_CHANNEL", 0xc0106446 },
+{ "DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE", 0xc0106447 },
 { "DRM_IOCTL_EXYNOS_VIDI_CONNECTION", 0xc0106447 },
 { "DRM_IOCTL_TEGRA_GET_SYNCPT", 0xc0106447 },
 { "DRM_IOCTL_VIA_DMA_INIT", 0xc0106447 },
@@ -2298,6 +2424,7 @@
 { "DRM_IOCTL_RADEON_INDIRECT", 0xc010644d },
 { "DRM_IOCTL_VIA_WAIT_IRQ", 0xc010644d },
 { "DRM_IOCTL_R128_INDIRECT", 0xc010644f },
+{ "DRM_IOCTL_AMDGPU_GEM_OP", 0xc0106450 },
 { "DRM_IOCTL_RADEON_ALLOC", 0xc0106453 },
 { "DRM_IOCTL_SIS_AGP_ALLOC", 0xc0106454 },
 { "DRM_IOCTL_I915_GEM_CREATE", 0xc010645b },
@@ -2312,8 +2439,12 @@
 { "DRM_IOCTL_MODE_GETPROPBLOB", 0xc01064ac },
 { "DRM_IOCTL_MODE_MAP_DUMB", 0xc01064b3 },
 { "DRM_IOCTL_MODE_GETPLANERESOURCES", 0xc01064b5 },
+{ "DRM_IOCTL_MODE_CREATEPROPBLOB", 0xc01064bd },
 { "MGSL_IOCWAITGPIO", 0xc0106d12 },
 { "DMX_GET_STC", 0xc0106f32 },
+{ "SCIF_ACCEPTREQ", 0xc0107304 },
+{ "SCIF_UNREG", 0xc0107309 },
+{ "SCIF_FENCE_MARK", 0xc010730f },
 { "BTRFS_IOC_SPACE_INFO", 0xc0109414 },
 { "BTRFS_IOC_QUOTA_CTL", 0xc0109428 },
 { "FSL_HV_IOCTL_PARTITION_START", 0xc010af03 },
@@ -2327,7 +2458,7 @@
 { "VIDIOC_G_CROP", 0xc014563b },
 { "DRM_IOCTL_VIA_ALLOCMEM", 0xc0146440 },
 { "DRM_IOCTL_VIA_MAP_INIT", 0xc0146444 },
-{ "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", 0xc014646b },
+{ "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", 0xc014646a },
 { "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", 0xc014646b },
 { "DRM_IOCTL_MODE_GETENCODER", 0xc01464a6 },
 { "FW_CDEV_IOC_ADD_DESCRIPTOR", 0xc0182306 },
@@ -2337,6 +2468,7 @@
 { "FW_CDEV_IOC_SEND_PHY_PACKET", 0xc0182315 },
 { "HIDIOCGUSAGE", 0xc018480b },
 { "HIDIOCGUCODE", 0xc018480d },
+{ "AMDKFD_IOC_WAIT_EVENTS", 0xc0184b0c },
 { "MTRRIOC_GET_ENTRY", 0xc0184d03 },
 { "MTRRIOC_GET_PAGE_ENTRY", 0xc0184d08 },
 { "MEMWRITEOOB64", 0xc0184d15 },
@@ -2350,15 +2482,23 @@
 { "DRM_IOCTL_GET_CLIENT", 0xc0186405 },
 { "DRM_IOCTL_ADD_MAP", 0xc0186415 },
 { "DRM_IOCTL_ADD_BUFS", 0xc0186416 },
+{ "DRM_IOCTL_AMDGPU_BO_LIST", 0xc0186443 },
+{ "DRM_IOCTL_AMDGPU_CS", 0xc0186444 },
+{ "DRM_IOCTL_VC4_CREATE_SHADER_BO", 0xc0186445 },
 { "DRM_IOCTL_OMAP_GEM_INFO", 0xc0186446 },
 { "DRM_IOCTL_QXL_ALLOC_SURF", 0xc0186446 },
+{ "DRM_IOCTL_ETNAVIV_GEM_USERPTR", 0xc0186448 },
+{ "DRM_IOCTL_VIRTGPU_GET_CAPS", 0xc0186449 },
 { "DRM_IOCTL_RADEON_TEXTURE", 0xc018644e },
+{ "DRM_IOCTL_AMDGPU_GEM_USERPTR", 0xc0186451 },
 { "DRM_IOCTL_I915_GEM_PIN", 0xc0186455 },
 { "DRM_IOCTL_RADEON_GEM_INFO", 0xc018645c },
 { "DRM_IOCTL_RADEON_GEM_VA", 0xc018646b },
 { "DRM_IOCTL_RADEON_GEM_USERPTR", 0xc018646d },
 { "DRM_IOCTL_I915_GET_RESET_STATS", 0xc0186472 },
 { "DRM_IOCTL_I915_GEM_USERPTR", 0xc0186473 },
+{ "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM", 0xc0186474 },
+{ "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM", 0xc0186475 },
 { "DRM_IOCTL_MODE_PAGE_FLIP", 0xc01864b0 },
 { "DRM_IOCTL_MODE_DIRTYFB", 0xc01864b1 },
 { "DRM_IOCTL_MODE_OBJ_SETPROPERTY", 0xc01864ba },
@@ -2366,8 +2506,15 @@
 { "I2OPARMGET", 0xc0186904 },
 { "IPMICTL_RECEIVE_MSG_TRUNC", 0xc018690b },
 { "IPMICTL_RECEIVE_MSG", 0xc018690c },
+{ "RIO_ALLOC_DMA", 0xc0186d13 },
+{ "RIO_TRANSFER", 0xc0186d15 },
 { "NILFS_IOCTL_GET_VINFO", 0xc0186e86 },
 { "NILFS_IOCTL_GET_BDESCS", 0xc0186e87 },
+{ "SCIF_SEND", 0xc0187306 },
+{ "SCIF_RECV", 0xc0187307 },
+{ "SCIF_GET_NODEIDS", 0xc018730e },
+{ "TOSH_SMM", 0xc0187490 },
+{ "TOSHIBA_ACPI_SCI", 0xc0187491 },
 { "AUTOFS_DEV_IOCTL_VERSION", 0xc0189371 },
 { "AUTOFS_DEV_IOCTL_PROTOVER", 0xc0189372 },
 { "AUTOFS_DEV_IOCTL_PROTOSUBVER", 0xc0189373 },
@@ -2383,6 +2530,8 @@
 { "AUTOFS_DEV_IOCTL_ASKUMOUNT", 0xc018937d },
 { "AUTOFS_DEV_IOCTL_ISMOUNTPOINT", 0xc018937e },
 { "BTRFS_IOC_FILE_EXTENT_SAME", 0xc0189436 },
+{ "FIDEDUPERANGE", 0xc0189436 },
+{ "UFFDIO_API", 0xc018aa3f },
 { "KVM_TRANSLATE", 0xc018ae85 },
 { "IB_USER_MAD_REGISTER_AGENT", 0xc01c1b01 },
 { "SI4713_IOC_MEASURE_RNL", 0xc01c56c0 },
@@ -2397,15 +2546,20 @@
 { "MEDIA_IOC_ENUM_LINKS", 0xc01c7c02 },
 { "FW_CDEV_IOC_ALLOCATE", 0xc0202302 },
 { "FW_CDEV_IOC_CREATE_ISO_CONTEXT", 0xc0202308 },
+{ "AMDKFD_IOC_CREATE_EVENT", 0xc0204b08 },
+{ "ND_IOCTL_ARS_CAP", 0xc0204e01 },
+{ "ND_IOCTL_ARS_START", 0xc0204e02 },
+{ "ND_IOCTL_CLEAR_ERROR", 0xc0204e04 },
 { "VIDIOC_OMAP3ISP_CCDC_CFG", 0xc02056c1 },
 { "VIDIOC_OMAP3ISP_AEWB_CFG", 0xc02056c3 },
 { "VIDIOC_OMAP3ISP_STAT_REQ", 0xc02056c6 },
 { "SNDRV_RAWMIDI_IOCTL_PARAMS", 0xc0205710 },
 { "X86_IOC_RDMSR_REGS", 0xc02063a0 },
 { "X86_IOC_WRMSR_REGS", 0xc02063a1 },
+{ "DRM_IOCTL_AMDGPU_GEM_CREATE", 0xc0206440 },
 { "DRM_IOCTL_MSM_GEM_SUBMIT", 0xc0206446 },
+{ "DRM_IOCTL_AMDGPU_WAIT_CS", 0xc0206449 },
 { "DRM_IOCTL_RADEON_GEM_CREATE", 0xc020645d },
-{ "DRM_IOCTL_I915_GEM_MMAP", 0xc020645e },
 { "DRM_IOCTL_RADEON_GEM_MMAP", 0xc020645e },
 { "DRM_IOCTL_RADEON_GEM_PREAD", 0xc0206461 },
 { "DRM_IOCTL_RADEON_GEM_PWRITE", 0xc0206462 },
@@ -2418,6 +2572,8 @@
 { "FS_IOC_FIEMAP", 0xc020660b },
 { "GENWQE_PIN_MEM", 0xc020a528 },
 { "GENWQE_UNPIN_MEM", 0xc020a529 },
+{ "UFFDIO_REGISTER", 0xc020aa00 },
+{ "UFFDIO_ZEROPAGE", 0xc020aa04 },
 { "SNDCTL_MIDI_MPUCMD", 0xc0216d02 },
 { "SNDRV_COMPRESS_GET_METADATA", 0xc0244315 },
 { "VIDIOC_G_EDID", 0xc0245628 },
@@ -2425,6 +2581,8 @@
 { "VIDIOC_SUBDEV_S_EDID", 0xc0245629 },
 { "VIDIOC_S_EDID", 0xc0245629 },
 { "DRM_IOCTL_VERSION", 0xc0246400 },
+{ "DRM_IOCTL_VIRTGPU_TRANSFER_FROM_HOST", 0xc0246446 },
+{ "DRM_IOCTL_VIRTGPU_TRANSFER_TO_HOST", 0xc0246447 },
 { "DRM_IOCTL_MODE_CURSOR2", 0xc02464bb },
 { "NCP_IOC_GET_FS_INFO_V2", 0xc0246e04 },
 { "IB_USER_MAD_REGISTER_AGENT2", 0xc0281b04 },
@@ -2436,11 +2594,21 @@
 { "VIDIOC_TRY_ENCODER_CMD", 0xc028564e },
 { "SW_SYNC_IOC_CREATE_FENCE", 0xc0285700 },
 { "DRM_IOCTL_DMA", 0xc0286429 },
+{ "DRM_IOCTL_I915_GEM_MMAP", 0xc028645e },
 { "DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST", 0xc0286461 },
 { "DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF", 0xc0286472 },
 { "DRM_IOCTL_NOUVEAU_GEM_INFO", 0xc0286484 },
+{ "RIO_MAP_OUTBOUND", 0xc0286d0f },
+{ "RIO_MAP_INBOUND", 0xc0286d11 },
 { "NCP_IOC_GET_FS_INFO", 0xc0286e04 },
 { "PHN_GETREGS", 0xc0287007 },
+{ "SCIF_REG", 0xc0287308 },
+{ "SCIF_READFROM", 0xc028730a },
+{ "SCIF_WRITETO", 0xc028730b },
+{ "SCIF_VREADFROM", 0xc028730c },
+{ "SCIF_VWRITETO", 0xc028730d },
+{ "SCIF_FENCE_SIGNAL", 0xc0287311 },
+{ "UFFDIO_COPY", 0xc028aa03 },
 { "KVM_TPR_ACCESS_REPORTING", 0xc028ae92 },
 { "FSL_HV_IOCTL_MEMCPY", 0xc028af05 },
 { "FSL_HV_IOCTL_GETPROP", 0xc028af07 },
@@ -2453,6 +2621,7 @@
 { "VIDIOC_ENUM_FRAMESIZES", 0xc02c564a },
 { "DRM_IOCTL_I915_OVERLAY_ATTRS", 0xc02c6468 },
 { "MEMWRITE", 0xc0304d18 },
+{ "ND_IOCTL_ARS_STATUS", 0xc0304e03 },
 { "SNDRV_SEQ_IOCTL_SYSTEM_INFO", 0xc0305302 },
 { "VIDIOC_SUBDEV_ENUM_MBUS_CODE", 0xc0305602 },
 { "VIDIOC_SUBDEV_G_FRAME_INTERVAL", 0xc0305615 },
@@ -2460,6 +2629,7 @@
 { "VIDIOC_OMAP3ISP_HIST_CFG", 0xc03056c4 },
 { "SNDRV_RAWMIDI_IOCTL_STATUS", 0xc0305720 },
 { "BINDER_WRITE_READ", 0xc0306201 },
+{ "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", 0xc0306446 },
 { "DRM_IOCTL_NOUVEAU_GEM_NEW", 0xc0306480 },
 { "DRM_IOCTL_MODE_SETPLANE", 0xc03064b7 },
 { "MBXFB_IOCX_OVERLAY", 0xc030f400 },
@@ -2471,11 +2641,14 @@
 { "VIDIOC_SUBDEV_G_CROP", 0xc038563b },
 { "VIDIOC_SUBDEV_S_CROP", 0xc038563c },
 { "VIDIOC_DBG_G_REGISTER", 0xc0385650 },
+{ "DRM_IOCTL_VIRTGPU_RESOURCE_CREATE", 0xc0386444 },
+{ "DRM_IOCTL_MODE_ATOMIC", 0xc03864bc },
 { "BTRFS_IOC_INO_PATHS", 0xc0389423 },
 { "BTRFS_IOC_LOGICAL_INO", 0xc0389424 },
 { "GENWQE_SLU_UPDATE", 0xc038a550 },
 { "GENWQE_SLU_READ", 0xc038a551 },
 { "VIDIOC_OMAP3ISP_PRV_CFG", 0xc03c56c2 },
+{ "PTP_SYS_OFFSET_PRECISE", 0xc0403d08 },
 { "CAPI_GET_PROFILE", 0xc0404309 },
 { "SNDRV_TIMER_IOCTL_GSTATUS", 0xc0405405 },
 { "SNDRV_CTL_IOCTL_ELEM_REMOVE", 0xc0405519 },
@@ -2493,7 +2666,6 @@
 { "DRM_IOCTL_MODE_GETPROPERTY", 0xc04064aa },
 { "VIDIOC_QUERYCTRL", 0xc0445624 },
 { "VIDIOC_G_MODULATOR", 0xc0445636 },
-{ "DRM_IOCTL_MODE_ADDFB2", 0xc04464b8 },
 { "BLKTRACESETUP", 0xc0481273 },
 { "FBIO_CURSOR", 0xc0484608 },
 { "SNDRV_EMU10K1_IOCTL_PCM_PEEK", 0xc0484831 },
@@ -2508,8 +2680,10 @@
 { "DRM_IOCTL_MODE_DETACHMODE", 0xc04864a9 },
 { "VIDEO_COMMAND", 0xc0486f3b },
 { "VIDEO_TRY_COMMAND", 0xc0486f3c },
+{ "MEDIA_IOC_G_TOPOLOGY", 0xc0487c04 },
 { "KVM_GET_PIT", 0xc048ae65 },
 { "MMC_IOC_CMD", 0xc048b300 },
+{ "GPIO_GET_LINEINFO_IOCTL", 0xc048b402 },
 { "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", 0xc04c5349 },
 { "VIDIOC_OMAP3ISP_AF_CFG", 0xc04c56c5 },
 { "SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION", 0xc0505350 },
@@ -2536,13 +2710,24 @@
 { "SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER", 0xc0605345 },
 { "UI_BEGIN_FF_UPLOAD", 0xc06055c8 },
 { "DRM_IOCTL_EXYNOS_IPP_SET_PROPERTY", 0xc0606471 },
+{ "DK_CXLFLASH_DETACH", 0xc060ca83 },
 { "SNDRV_PCM_IOCTL_SW_PARAMS", 0xc0684113 },
 { "DRM_IOCTL_MODE_GETCRTC", 0xc06864a1 },
 { "DRM_IOCTL_MODE_SETCRTC", 0xc06864a2 },
+{ "DRM_IOCTL_MODE_ADDFB2", 0xc06864b8 },
+{ "DK_CXLFLASH_RELEASE", 0xc068ca82 },
+{ "DK_CXLFLASH_MANAGE_LUN", 0xc068ca86 },
 { "BTRFS_IOC_TREE_SEARCH_V2", 0xc0709411 },
+{ "DK_CXLFLASH_USER_DIRECT", 0xc070ca81 },
+{ "DK_CXLFLASH_VLUN_CLONE", 0xc070ca89 },
 { "SNDCTL_MIDI_INFO", 0xc074510c },
 { "VIDIOC_G_SLICED_VBI_CAP", 0xc0745645 },
+{ "DK_CXLFLASH_RECOVER_AFU", 0xc078ca85 },
+{ "DK_CXLFLASH_USER_VIRTUAL", 0xc078ca87 },
+{ "DK_CXLFLASH_VLUN_RESIZE", 0xc078ca88 },
+{ "SNDRV_PCM_IOCTL_STATUS_EXT", 0xc0804124 },
 { "SOUND_MIXER_ACCESS", 0xc0804d66 },
+{ "ND_IOCTL_SMART", 0xc0844e01 },
 { "VIDIOC_SUBDEV_S_DV_TIMINGS", 0xc0845657 },
 { "VIDIOC_S_DV_TIMINGS", 0xc0845657 },
 { "VIDIOC_G_DV_TIMINGS", 0xc0845658 },
@@ -2557,8 +2742,12 @@
 { "SNDRV_SEQ_IOCTL_GET_NAMED_QUEUE", 0xc08c5336 },
 { "VIDIOC_DV_TIMINGS_CAP", 0xc0905664 },
 { "VIDIOC_SUBDEV_DV_TIMINGS_CAP", 0xc0905664 },
+{ "DK_CXLFLASH_ATTACH", 0xc090ca80 },
+{ "DK_CXLFLASH_VERIFY", 0xc090ca84 },
 { "VIDIOC_ENUM_DV_TIMINGS", 0xc0945662 },
 { "VIDIOC_SUBDEV_ENUM_DV_TIMINGS", 0xc0945662 },
+{ "DRM_IOCTL_VC4_SUBMIT_CL", 0xc0a06440 },
+{ "DRM_IOCTL_VC4_GET_HANG_STATE", 0xc0a06446 },
 { "SOUND_MIXER_GETLEVELS", 0xc0a44d74 },
 { "SOUND_MIXER_SETLEVELS", 0xc0a44d75 },
 { "SNDRV_SEQ_IOCTL_CREATE_PORT", 0xc0a45320 },
@@ -2586,6 +2775,7 @@
 { "SNDRV_CTL_IOCTL_ELEM_ADD", 0xc1105517 },
 { "SNDRV_CTL_IOCTL_ELEM_REPLACE", 0xc1105518 },
 { "SNDRV_CTL_IOCTL_PCM_INFO", 0xc1205531 },
+{ "DRM_IOCTL_AMDGPU_GEM_METADATA", 0xc1206446 },
 { "DM_VERSION", 0xc138fd00 },
 { "DM_REMOVE_ALL", 0xc138fd01 },
 { "DM_LIST_DEVICES", 0xc138fd02 },
@@ -2617,6 +2807,7 @@
 { "SNDCTL_COPR_SENDMSG", 0xcfa44308 },
 { "SNDCTL_SYNTH_CONTROL", 0xcfa45115 },
 { "SNDCTL_COPR_LOAD", 0xcfb04301 },
+{ "NVM_INFO", 0xd0004c20 },
 { "BTRFS_IOC_TREE_SEARCH", 0xd0009411 },
 { "BTRFS_IOC_INO_LOOKUP", 0xd0009412 },
 { "BTRFS_IOC_DEV_INFO", 0xd000941e },
diff --git a/ioprio.c b/ioprio.c
index 0a1a596..0b83be7 100644
--- a/ioprio.c
+++ b/ioprio.c
@@ -51,19 +51,19 @@
 #define IOPRIO_PRIO_DATA(mask)	((mask) & IOPRIO_PRIO_MASK)
 
 static const char *
-sprint_ioprio(int ioprio)
+sprint_ioprio(unsigned int ioprio)
 {
 	static char outstr[256];
 	const char *str;
-	int class, data;
+	unsigned int class, data;
 
 	class = IOPRIO_PRIO_CLASS(ioprio);
 	data = IOPRIO_PRIO_DATA(ioprio);
 	str = xlookup(ioprio_class, class);
 	if (str)
-		sprintf(outstr, "IOPRIO_PRIO_VALUE(%s,%d)", str, data);
+		sprintf(outstr, "IOPRIO_PRIO_VALUE(%s, %d)", str, data);
 	else
-		sprintf(outstr, "IOPRIO_PRIO_VALUE(%#x /* %s */,%d)",
+		sprintf(outstr, "IOPRIO_PRIO_VALUE(%#x /* %s */, %d)",
 			class, "IOPRIO_CLASS_???", data);
 
 	return outstr;
diff --git a/ipc_sem.c b/ipc_sem.c
index c7351ae..ba21b7b 100644
--- a/ipc_sem.c
+++ b/ipc_sem.c
@@ -43,12 +43,16 @@
 #include "xlat/semop_flags.h"
 
 #if defined HAVE_SYS_SEM_H || defined HAVE_LINUX_SEM_H
-static void
-tprint_sembuf(const struct sembuf *sb)
+static bool
+print_sembuf(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
 {
+	const struct sembuf *sb = elem_buf;
+
 	tprintf("{%u, %d, ", sb->sem_num, sb->sem_op);
-	printflags(semop_flags, sb->sem_flg, "SEM_???");
+	printflags(semop_flags, (unsigned short) sb->sem_flg, "SEM_???");
 	tprints("}");
+
+	return true;
 }
 #endif
 
@@ -56,35 +60,9 @@
 tprint_sembuf_array(struct tcb *tcp, const long addr, const unsigned long count)
 {
 #if defined HAVE_SYS_SEM_H || defined HAVE_LINUX_SEM_H
-	unsigned long max_count;
 	struct sembuf sb;
-
-	if (abbrev(tcp))
-		max_count = (max_strlen < count) ? max_strlen : count;
-	else
-		max_count = count;
-
-	if (!max_count)
-		printaddr(addr);
-	else if (!umove_or_printaddr(tcp, addr, &sb)) {
-		unsigned long i;
-
-		tprints("[");
-		tprint_sembuf(&sb);
-
-		for (i = 1; i < max_count; ++i) {
-			tprints(", ");
-			if (umove_or_printaddr(tcp, addr + i * sizeof(sb), &sb))
-				break;
-			else
-				tprint_sembuf(&sb);
-		}
-
-		if (i < max_count || max_count < count)
-			tprints(", ...");
-
-		tprints("]");
-	}
+	print_array(tcp, addr, count, &sb, sizeof(sb),
+		    umoven_or_printaddr, print_sembuf, 0);
 #else
 	printaddr(addr);
 #endif
diff --git a/kexec.c b/kexec.c
index 89b7528..128b1df 100644
--- a/kexec.c
+++ b/kexec.c
@@ -37,56 +37,49 @@
 # define KEXEC_SEGMENT_MAX 16
 #endif
 
-static void
-print_seg(const unsigned long *seg)
+static bool
+print_seg(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
 {
+	const unsigned long *seg;
+	unsigned long seg_buf[4];
+
+        if (elem_size < sizeof(seg_buf)) {
+		unsigned int i;
+
+		for (i = 0; i < ARRAY_SIZE(seg_buf); ++i)
+			seg_buf[i] = ((unsigned int *) elem_buf)[i];
+		seg = seg_buf;
+	} else {
+		seg = elem_buf;
+	}
+
 	tprints("{");
 	printaddr(seg[0]);
 	tprintf(", %lu, ", seg[1]);
 	printaddr(seg[2]);
 	tprintf(", %lu}", seg[3]);
+
+	return true;
 }
 
 static void
 print_kexec_segments(struct tcb *tcp, const unsigned long addr,
 		     const unsigned long len)
 {
-	unsigned long seg[4];
-	const size_t sizeof_seg = ARRAY_SIZE(seg) * current_wordsize;
-	unsigned int i;
-
-	if (!len) {
-		tprints("[]");
-		return;
-	}
-
 	if (len > KEXEC_SEGMENT_MAX) {
 		printaddr(addr);
 		return;
 	}
 
-	if (umove_ulong_array_or_printaddr(tcp, addr, seg, ARRAY_SIZE(seg)))
-		return;
+	unsigned long seg[4];
+	const size_t sizeof_seg = ARRAY_SIZE(seg) * current_wordsize;
 
-	tprints("[");
-	print_seg(seg);
-
-	for (i = 1; i < len; ++i) {
-		tprints(", ");
-		if (umove_ulong_array_or_printaddr(tcp,
-						   addr + i * sizeof_seg,
-						   seg, ARRAY_SIZE(seg)))
-			break;
-		print_seg(seg);
-	}
-
-	tprints("]");
+	print_array(tcp, addr, len, seg, sizeof_seg,
+		    umoven_or_printaddr, print_seg, 0);
 }
 
 SYS_FUNC(kexec_load)
 {
-	unsigned long n;
-
 	/* entry, nr_segments */
 	printaddr(tcp->u_arg[0]);
 	tprintf(", %lu, ", tcp->u_arg[1]);
@@ -96,12 +89,12 @@
 	tprints(", ");
 
 	/* flags */
-	n = tcp->u_arg[3];
-	printxval(kexec_arch_values, n & KEXEC_ARCH_MASK, "KEXEC_ARCH_???");
+	unsigned long n = tcp->u_arg[3];
+	printxval_long(kexec_arch_values, n & KEXEC_ARCH_MASK, "KEXEC_ARCH_???");
 	n &= ~KEXEC_ARCH_MASK;
 	if (n) {
 		tprints("|");
-		printflags(kexec_load_flags, n, "KEXEC_???");
+		printflags_long(kexec_load_flags, n, "KEXEC_???");
 	}
 
 	return RVAL_DECODED;
@@ -123,7 +116,7 @@
 	printstr(tcp, tcp->u_arg[3], tcp->u_arg[2]);
 	tprints(", ");
 	/* flags */
-	printflags(kexec_file_load_flags, tcp->u_arg[4], "KEXEC_FILE_???");
+	printflags_long(kexec_file_load_flags, tcp->u_arg[4], "KEXEC_FILE_???");
 
 	return RVAL_DECODED;
 }
diff --git a/keyctl.c b/keyctl.c
index 81391a3..50d6fb4 100644
--- a/keyctl.c
+++ b/keyctl.c
@@ -34,7 +34,7 @@
 static void
 print_keyring_serial_number(key_serial_t id)
 {
-	const char *str = xlookup(key_spec, id);
+	const char *str = xlookup(key_spec, (unsigned int) id);
 
 	if (str)
 		tprints(str);
diff --git a/linux/32/ioctls_inc_align32.h b/linux/32/ioctls_inc_align32.h
index be42188..70ec077 100644
--- a/linux/32/ioctls_inc_align32.h
+++ b/linux/32/ioctls_inc_align32.h
@@ -195,6 +195,7 @@
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST", _IOC_READ|_IOC_WRITE, 0x6461, 0x28 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_GET", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
+{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_MAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_CMD_CTRL", _IOC_READ|_IOC_WRITE, 0x6473, 0x08 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_GET_PROPERTY", _IOC_READ|_IOC_WRITE, 0x6470, 0x50 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF", _IOC_READ|_IOC_WRITE, 0x6472, 0x28 },
@@ -715,6 +716,7 @@
 { "linux/dm-ioctl.h", "DM_TABLE_STATUS", _IOC_READ|_IOC_WRITE, 0xfd0c, 0x138 },
 { "linux/dm-ioctl.h", "DM_TARGET_MSG", _IOC_READ|_IOC_WRITE, 0xfd0e, 0x138 },
 { "linux/dm-ioctl.h", "DM_VERSION", _IOC_READ|_IOC_WRITE, 0xfd00, 0x138 },
+{ "linux/dma-buf.h", "DMA_BUF_IOCTL_SYNC", _IOC_WRITE, 0x6200, 0x08 },
 { "linux/dn.h", "OSIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
 { "linux/dn.h", "OSIOCSNETADDR", _IOC_WRITE, 0x89e0, 0x04 },
 { "linux/dn.h", "SIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
@@ -926,8 +928,11 @@
 { "linux/fs.h", "FS_IOC_FSSETXATTR", _IOC_WRITE, 0x5820, 0x1c },
 { "linux/fs.h", "FS_IOC_GETFLAGS", _IOC_READ, 0x6601, 0x04 },
 { "linux/fs.h", "FS_IOC_GETVERSION", _IOC_READ, 0x7601, 0x04 },
+{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
+{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
 { "linux/fs.h", "FS_IOC_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
 { "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
+{ "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
 { "linux/fsl-diu-fb.h", "MFB_GET_ALPHA", _IOC_READ, 0x4d00, 0x01 },
 { "linux/fsl-diu-fb.h", "MFB_GET_AOID", _IOC_READ, 0x4d04, 0x08 },
 { "linux/fsl-diu-fb.h", "MFB_GET_GAMMA", _IOC_READ, 0x4d01, 0x01 },
@@ -964,6 +969,8 @@
 { "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
+{ "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
+{ "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
 { "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
 { "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
 { "linux/gsmmux.h", "GSMIOC_GETCONF", _IOC_READ, 0x4700, 0x4c },
@@ -1221,6 +1228,9 @@
 { "linux/joystick.h", "JSIOCSAXMAP", _IOC_WRITE, 0x6a31, 0x40 },
 { "linux/joystick.h", "JSIOCSBTNMAP", _IOC_WRITE, 0x6a33, 0x400 },
 { "linux/joystick.h", "JSIOCSCORR", _IOC_WRITE, 0x6a21, 0x24 },
+{ "linux/kcov.h", "KCOV_DISABLE", _IOC_NONE, 0x6365, 0x00 },
+{ "linux/kcov.h", "KCOV_ENABLE", _IOC_NONE, 0x6364, 0x00 },
+{ "linux/kcov.h", "KCOV_INIT_TRACE", _IOC_READ, 0x6301, 0x04 },
 { "linux/kd.h", "GIO_CMAP", 0, 0x4B70, 0 },
 { "linux/kd.h", "GIO_FONT", 0, 0x4B60, 0 },
 { "linux/kd.h", "GIO_FONTX", 0, 0x4B6B, 0 },
@@ -1298,6 +1308,7 @@
 { "linux/kvm.h", "KVM_CREATE_PIT", _IOC_NONE, 0xae64, 0x00 },
 { "linux/kvm.h", "KVM_CREATE_PIT2", _IOC_WRITE, 0xae77, 0x40 },
 { "linux/kvm.h", "KVM_CREATE_SPAPR_TCE", _IOC_WRITE, 0xaea8, 0x0c },
+{ "linux/kvm.h", "KVM_CREATE_SPAPR_TCE_64", _IOC_WRITE, 0xaea8, 0x20 },
 { "linux/kvm.h", "KVM_CREATE_VCPU", _IOC_NONE, 0xae41, 0x00 },
 { "linux/kvm.h", "KVM_CREATE_VM", _IOC_NONE, 0xae01, 0x00 },
 { "linux/kvm.h", "KVM_DEASSIGN_DEV_IRQ", _IOC_WRITE, 0xae75, 0x40 },
@@ -1469,6 +1480,7 @@
 { "linux/media.h", "MEDIA_IOC_DEVICE_INFO", _IOC_READ|_IOC_WRITE, 0x7c00, 0x100 },
 { "linux/media.h", "MEDIA_IOC_ENUM_ENTITIES", _IOC_READ|_IOC_WRITE, 0x7c01, 0x100 },
 { "linux/media.h", "MEDIA_IOC_ENUM_LINKS", _IOC_READ|_IOC_WRITE, 0x7c02, 0x1c },
+{ "linux/media.h", "MEDIA_IOC_G_TOPOLOGY", _IOC_READ|_IOC_WRITE, 0x7c04, 0x48 },
 { "linux/media.h", "MEDIA_IOC_SETUP_LINK", _IOC_READ|_IOC_WRITE, 0x7c03, 0x34 },
 { "linux/mei.h", "IOCTL_MEI_CONNECT_CLIENT", _IOC_READ|_IOC_WRITE, 0x4801, 0x10 },
 { "linux/mei.h", "IOCTL_MEI_NOTIFY_GET", _IOC_READ, 0x4803, 0x04 },
@@ -1532,6 +1544,7 @@
 { "linux/ndctl.h", "ND_IOCTL_ARS_CAP", _IOC_READ|_IOC_WRITE, 0x4e01, 0x20 },
 { "linux/ndctl.h", "ND_IOCTL_ARS_START", _IOC_READ|_IOC_WRITE, 0x4e02, 0x20 },
 { "linux/ndctl.h", "ND_IOCTL_ARS_STATUS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x30 },
+{ "linux/ndctl.h", "ND_IOCTL_CLEAR_ERROR", _IOC_READ|_IOC_WRITE, 0x4e04, 0x20 },
 { "linux/ndctl.h", "ND_IOCTL_DIMM_FLAGS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x08 },
 { "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_DATA", _IOC_READ|_IOC_WRITE, 0x4e05, 0x0c },
 { "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_SIZE", _IOC_READ|_IOC_WRITE, 0x4e04, 0x0c },
@@ -1688,6 +1701,7 @@
 { "linux/ptp_clock.h", "PTP_PIN_GETFUNC", _IOC_READ|_IOC_WRITE, 0x3d06, 0x60 },
 { "linux/ptp_clock.h", "PTP_PIN_SETFUNC", _IOC_WRITE, 0x3d07, 0x60 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET", _IOC_WRITE, 0x3d05, 0x340 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE", _IOC_READ|_IOC_WRITE, 0x3d08, 0x40 },
 { "linux/radeonfb.h", "FBIO_RADEON_GET_MIRROR", _IOC_READ, 0x4003, 0x04 },
 { "linux/radeonfb.h", "FBIO_RADEON_SET_MIRROR", _IOC_WRITE, 0x4004, 0x04 },
 { "linux/raid/md_u.h", "ADD_NEW_DISK", _IOC_WRITE, 0x0921, 0x14 },
@@ -1722,6 +1736,30 @@
 { "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
 { "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x04 },
 { "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
+{ "linux/rio_mport_cdev.h", "RIO_ALLOC_DMA", _IOC_READ|_IOC_WRITE, 0x6d13, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_DEV_ADD", _IOC_WRITE, 0x6d17, 0x20 },
+{ "linux/rio_mport_cdev.h", "RIO_DEV_DEL", _IOC_WRITE, 0x6d18, 0x20 },
+{ "linux/rio_mport_cdev.h", "RIO_DISABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d0a, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_DISABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0c, 0x10 },
+{ "linux/rio_mport_cdev.h", "RIO_ENABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d09, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_ENABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0b, 0x10 },
+{ "linux/rio_mport_cdev.h", "RIO_FREE_DMA", _IOC_WRITE, 0x6d14, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_GET_EVENT_MASK", _IOC_READ, 0x6d0e, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_MAP_INBOUND", _IOC_READ|_IOC_WRITE, 0x6d11, 0x28 },
+{ "linux/rio_mport_cdev.h", "RIO_MAP_OUTBOUND", _IOC_READ|_IOC_WRITE, 0x6d0f, 0x28 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_GET_PROPERTIES", _IOC_READ, 0x6d04, 0x30 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_COMPTAG_SET", _IOC_WRITE, 0x6d02, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_HDID_SET", _IOC_WRITE, 0x6d01, 0x02 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_PORT_IDX_GET", _IOC_READ, 0x6d03, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_LOCAL", _IOC_READ, 0x6d05, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_REMOTE", _IOC_READ, 0x6d07, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_LOCAL", _IOC_WRITE, 0x6d06, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_REMOTE", _IOC_WRITE, 0x6d08, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_SET_EVENT_MASK", _IOC_WRITE, 0x6d0d, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_TRANSFER", _IOC_READ|_IOC_WRITE, 0x6d15, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_UNMAP_INBOUND", _IOC_WRITE, 0x6d12, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_UNMAP_OUTBOUND", _IOC_WRITE, 0x6d10, 0x28 },
+{ "linux/rio_mport_cdev.h", "RIO_WAIT_FOR_ASYNC", _IOC_WRITE, 0x6d16, 0x08 },
 { "linux/rtc.h", "RTC_AIE_OFF", _IOC_NONE, 0x7002, 0x00 },
 { "linux/rtc.h", "RTC_AIE_ON", _IOC_NONE, 0x7001, 0x00 },
 { "linux/rtc.h", "RTC_ALM_READ", _IOC_READ, 0x7008, 0x24 },
@@ -2081,6 +2119,11 @@
 { "linux/usb/iowarrior.h", "IOW_GETINFO", _IOC_READ, 0xc003, 0x28 },
 { "linux/usb/iowarrior.h", "IOW_READ", _IOC_WRITE, 0xc002, 0x04 },
 { "linux/usb/iowarrior.h", "IOW_WRITE", _IOC_WRITE, 0xc001, 0x04 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GET_CAPS", _IOC_READ, 0x5b11, 0x01 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GOTO_LOCAL", _IOC_NONE, 0x5b14, 0x00 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_READ_STB", _IOC_READ, 0x5b12, 0x01 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_REN_CONTROL", _IOC_WRITE, 0x5b13, 0x01 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_IN", _IOC_NONE, 0x5b04, 0x00 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_OUT", _IOC_NONE, 0x5b03, 0x00 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR", _IOC_NONE, 0x5b02, 0x00 },
@@ -2102,6 +2145,7 @@
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCONNECT_CLAIM", _IOC_READ, 0x551b, 0x108 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL", _IOC_READ, 0x550e, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL32", _IOC_READ, 0x550e, 0x08 },
+{ "linux/usbdevice_fs.h", "USBDEVFS_DROP_PRIVILEGES", _IOC_WRITE, 0x551e, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_FREE_STREAMS", _IOC_READ, 0x551d, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GETDRIVER", _IOC_WRITE, 0x5508, 0x104 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GET_CAPABILITIES", _IOC_READ, 0x551a, 0x04 },
@@ -2173,6 +2217,7 @@
 { "linux/vfio.h", "VFIO_SET_IOMMU", _IOC_NONE, 0x3b66, 0x00 },
 { "linux/vhost.h", "VHOST_GET_FEATURES", _IOC_READ, 0xaf00, 0x08 },
 { "linux/vhost.h", "VHOST_GET_VRING_BASE", _IOC_READ|_IOC_WRITE, 0xaf12, 0x08 },
+{ "linux/vhost.h", "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf24, 0x08 },
 { "linux/vhost.h", "VHOST_GET_VRING_ENDIAN", _IOC_WRITE, 0xaf14, 0x08 },
 { "linux/vhost.h", "VHOST_NET_SET_BACKEND", _IOC_WRITE, 0xaf30, 0x08 },
 { "linux/vhost.h", "VHOST_RESET_OWNER", _IOC_NONE, 0xaf02, 0x00 },
@@ -2188,6 +2233,7 @@
 { "linux/vhost.h", "VHOST_SET_OWNER", _IOC_NONE, 0xaf01, 0x00 },
 { "linux/vhost.h", "VHOST_SET_VRING_ADDR", _IOC_WRITE, 0xaf11, 0x28 },
 { "linux/vhost.h", "VHOST_SET_VRING_BASE", _IOC_WRITE, 0xaf12, 0x08 },
+{ "linux/vhost.h", "VHOST_SET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf23, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_CALL", _IOC_WRITE, 0xaf21, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_ENDIAN", _IOC_WRITE, 0xaf13, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
@@ -2392,9 +2438,11 @@
 { "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x78 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_RX_NOTIFY", _IOC_WRITE, 0x7600, 0x04 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_TX_NOTIFY", _IOC_WRITE, 0x7601, 0x04 },
+{ "misc/cxl.h", "CXL_IOCTL_DOWNLOAD_IMAGE", _IOC_WRITE, 0xca0a, 0x40 },
 { "misc/cxl.h", "CXL_IOCTL_GET_AFU_ID", _IOC_READ, 0xca02, 0x40 },
 { "misc/cxl.h", "CXL_IOCTL_GET_PROCESS_ELEMENT", _IOC_READ, 0xca01, 0x04 },
 { "misc/cxl.h", "CXL_IOCTL_START_WORK", _IOC_WRITE, 0xca00, 0x40 },
+{ "misc/cxl.h", "CXL_IOCTL_VALIDATE_IMAGE", _IOC_WRITE, 0xca0b, 0x40 },
 { "mtd/mtd-abi.h", "ECCGETLAYOUT", _IOC_READ, 0x4d11, 0x148 },
 { "mtd/mtd-abi.h", "ECCGETSTATS", _IOC_READ, 0x4d12, 0x10 },
 { "mtd/mtd-abi.h", "MEMERASE", _IOC_WRITE, 0x4d02, 0x08 },
@@ -2516,7 +2564,6 @@
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_PORT_INFO", _IOC_READ|_IOC_WRITE, 0x5322, 0xa4 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", _IOC_READ|_IOC_WRITE, 0x5349, 0x4c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5334, 0x8c },
-{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER", _IOC_READ|_IOC_WRITE, 0x5343, 0x00 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS", _IOC_READ|_IOC_WRITE, 0x5340, 0x5c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO", _IOC_READ|_IOC_WRITE, 0x5341, 0x2c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER", _IOC_READ|_IOC_WRITE, 0x5345, 0x60 },
@@ -2532,7 +2579,6 @@
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_PORT_INFO", _IOC_WRITE, 0x5323, 0xa4 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", _IOC_WRITE, 0x534a, 0x4c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5335, 0x8c },
-{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER", _IOC_WRITE, 0x5344, 0x00 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", _IOC_WRITE, 0x5342, 0x2c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER", _IOC_WRITE, 0x5346, 0x60 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT", _IOC_WRITE, 0x5330, 0x50 },
@@ -2711,7 +2757,6 @@
 { "staging/android/sw_sync.h", "SW_SYNC_IOC_INC", _IOC_WRITE, 0x5701, 0x04 },
 { "staging/android/sync.h", "SYNC_IOC_FENCE_INFO", _IOC_READ|_IOC_WRITE, 0x3e02, 0x28 },
 { "staging/android/sync.h", "SYNC_IOC_MERGE", _IOC_READ|_IOC_WRITE, 0x3e01, 0x28 },
-{ "staging/android/sync.h", "SYNC_IOC_WAIT", _IOC_WRITE, 0x3e00, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
 { "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
diff --git a/linux/32/ioctls_inc_align64.h b/linux/32/ioctls_inc_align64.h
index 0465c37..5dd46e3 100644
--- a/linux/32/ioctls_inc_align64.h
+++ b/linux/32/ioctls_inc_align64.h
@@ -195,6 +195,7 @@
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST", _IOC_READ|_IOC_WRITE, 0x6461, 0x28 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_GET", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
+{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_MAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_CMD_CTRL", _IOC_READ|_IOC_WRITE, 0x6473, 0x08 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_GET_PROPERTY", _IOC_READ|_IOC_WRITE, 0x6470, 0x50 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF", _IOC_READ|_IOC_WRITE, 0x6472, 0x28 },
@@ -715,6 +716,7 @@
 { "linux/dm-ioctl.h", "DM_TABLE_STATUS", _IOC_READ|_IOC_WRITE, 0xfd0c, 0x138 },
 { "linux/dm-ioctl.h", "DM_TARGET_MSG", _IOC_READ|_IOC_WRITE, 0xfd0e, 0x138 },
 { "linux/dm-ioctl.h", "DM_VERSION", _IOC_READ|_IOC_WRITE, 0xfd00, 0x138 },
+{ "linux/dma-buf.h", "DMA_BUF_IOCTL_SYNC", _IOC_WRITE, 0x6200, 0x08 },
 { "linux/dn.h", "OSIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
 { "linux/dn.h", "OSIOCSNETADDR", _IOC_WRITE, 0x89e0, 0x04 },
 { "linux/dn.h", "SIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
@@ -926,8 +928,11 @@
 { "linux/fs.h", "FS_IOC_FSSETXATTR", _IOC_WRITE, 0x5820, 0x1c },
 { "linux/fs.h", "FS_IOC_GETFLAGS", _IOC_READ, 0x6601, 0x04 },
 { "linux/fs.h", "FS_IOC_GETVERSION", _IOC_READ, 0x7601, 0x04 },
+{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
+{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
 { "linux/fs.h", "FS_IOC_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
 { "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
+{ "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
 { "linux/fsl-diu-fb.h", "MFB_GET_ALPHA", _IOC_READ, 0x4d00, 0x01 },
 { "linux/fsl-diu-fb.h", "MFB_GET_AOID", _IOC_READ, 0x4d04, 0x08 },
 { "linux/fsl-diu-fb.h", "MFB_GET_GAMMA", _IOC_READ, 0x4d01, 0x01 },
@@ -964,6 +969,8 @@
 { "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
+{ "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
+{ "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
 { "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
 { "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
 { "linux/gsmmux.h", "GSMIOC_GETCONF", _IOC_READ, 0x4700, 0x4c },
@@ -1221,6 +1228,9 @@
 { "linux/joystick.h", "JSIOCSAXMAP", _IOC_WRITE, 0x6a31, 0x40 },
 { "linux/joystick.h", "JSIOCSBTNMAP", _IOC_WRITE, 0x6a33, 0x400 },
 { "linux/joystick.h", "JSIOCSCORR", _IOC_WRITE, 0x6a21, 0x24 },
+{ "linux/kcov.h", "KCOV_DISABLE", _IOC_NONE, 0x6365, 0x00 },
+{ "linux/kcov.h", "KCOV_ENABLE", _IOC_NONE, 0x6364, 0x00 },
+{ "linux/kcov.h", "KCOV_INIT_TRACE", _IOC_READ, 0x6301, 0x04 },
 { "linux/kd.h", "GIO_CMAP", 0, 0x4B70, 0 },
 { "linux/kd.h", "GIO_FONT", 0, 0x4B60, 0 },
 { "linux/kd.h", "GIO_FONTX", 0, 0x4B6B, 0 },
@@ -1298,6 +1308,7 @@
 { "linux/kvm.h", "KVM_CREATE_PIT", _IOC_NONE, 0xae64, 0x00 },
 { "linux/kvm.h", "KVM_CREATE_PIT2", _IOC_WRITE, 0xae77, 0x40 },
 { "linux/kvm.h", "KVM_CREATE_SPAPR_TCE", _IOC_WRITE, 0xaea8, 0x0c },
+{ "linux/kvm.h", "KVM_CREATE_SPAPR_TCE_64", _IOC_WRITE, 0xaea8, 0x20 },
 { "linux/kvm.h", "KVM_CREATE_VCPU", _IOC_NONE, 0xae41, 0x00 },
 { "linux/kvm.h", "KVM_CREATE_VM", _IOC_NONE, 0xae01, 0x00 },
 { "linux/kvm.h", "KVM_DEASSIGN_DEV_IRQ", _IOC_WRITE, 0xae75, 0x40 },
@@ -1342,7 +1353,7 @@
 { "linux/kvm.h", "KVM_PPC_GET_HTAB_FD", _IOC_WRITE, 0xaeaa, 0x20 },
 { "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 },
 { "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 },
-{ "linux/kvm.h", "KVM_PPC_RTAS_DEFINE_TOKEN", _IOC_WRITE, 0xaeac, 0x200 },
+{ "linux/kvm.h", "KVM_PPC_RTAS_DEFINE_TOKEN", _IOC_WRITE, 0xaeac, 0x80 },
 { "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 },
 { "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
 { "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
@@ -1469,6 +1480,7 @@
 { "linux/media.h", "MEDIA_IOC_DEVICE_INFO", _IOC_READ|_IOC_WRITE, 0x7c00, 0x100 },
 { "linux/media.h", "MEDIA_IOC_ENUM_ENTITIES", _IOC_READ|_IOC_WRITE, 0x7c01, 0x100 },
 { "linux/media.h", "MEDIA_IOC_ENUM_LINKS", _IOC_READ|_IOC_WRITE, 0x7c02, 0x1c },
+{ "linux/media.h", "MEDIA_IOC_G_TOPOLOGY", _IOC_READ|_IOC_WRITE, 0x7c04, 0x48 },
 { "linux/media.h", "MEDIA_IOC_SETUP_LINK", _IOC_READ|_IOC_WRITE, 0x7c03, 0x34 },
 { "linux/mei.h", "IOCTL_MEI_CONNECT_CLIENT", _IOC_READ|_IOC_WRITE, 0x4801, 0x10 },
 { "linux/mei.h", "IOCTL_MEI_NOTIFY_GET", _IOC_READ, 0x4803, 0x04 },
@@ -1532,6 +1544,7 @@
 { "linux/ndctl.h", "ND_IOCTL_ARS_CAP", _IOC_READ|_IOC_WRITE, 0x4e01, 0x20 },
 { "linux/ndctl.h", "ND_IOCTL_ARS_START", _IOC_READ|_IOC_WRITE, 0x4e02, 0x20 },
 { "linux/ndctl.h", "ND_IOCTL_ARS_STATUS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x30 },
+{ "linux/ndctl.h", "ND_IOCTL_CLEAR_ERROR", _IOC_READ|_IOC_WRITE, 0x4e04, 0x20 },
 { "linux/ndctl.h", "ND_IOCTL_DIMM_FLAGS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x08 },
 { "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_DATA", _IOC_READ|_IOC_WRITE, 0x4e05, 0x0c },
 { "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_SIZE", _IOC_READ|_IOC_WRITE, 0x4e04, 0x0c },
@@ -1688,6 +1701,7 @@
 { "linux/ptp_clock.h", "PTP_PIN_GETFUNC", _IOC_READ|_IOC_WRITE, 0x3d06, 0x60 },
 { "linux/ptp_clock.h", "PTP_PIN_SETFUNC", _IOC_WRITE, 0x3d07, 0x60 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET", _IOC_WRITE, 0x3d05, 0x340 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE", _IOC_READ|_IOC_WRITE, 0x3d08, 0x40 },
 { "linux/radeonfb.h", "FBIO_RADEON_GET_MIRROR", _IOC_READ, 0x4003, 0x04 },
 { "linux/radeonfb.h", "FBIO_RADEON_SET_MIRROR", _IOC_WRITE, 0x4004, 0x04 },
 { "linux/raid/md_u.h", "ADD_NEW_DISK", _IOC_WRITE, 0x0921, 0x14 },
@@ -1722,6 +1736,30 @@
 { "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
 { "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x04 },
 { "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
+{ "linux/rio_mport_cdev.h", "RIO_ALLOC_DMA", _IOC_READ|_IOC_WRITE, 0x6d13, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_DEV_ADD", _IOC_WRITE, 0x6d17, 0x20 },
+{ "linux/rio_mport_cdev.h", "RIO_DEV_DEL", _IOC_WRITE, 0x6d18, 0x20 },
+{ "linux/rio_mport_cdev.h", "RIO_DISABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d0a, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_DISABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0c, 0x10 },
+{ "linux/rio_mport_cdev.h", "RIO_ENABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d09, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_ENABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0b, 0x10 },
+{ "linux/rio_mport_cdev.h", "RIO_FREE_DMA", _IOC_WRITE, 0x6d14, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_GET_EVENT_MASK", _IOC_READ, 0x6d0e, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_MAP_INBOUND", _IOC_READ|_IOC_WRITE, 0x6d11, 0x28 },
+{ "linux/rio_mport_cdev.h", "RIO_MAP_OUTBOUND", _IOC_READ|_IOC_WRITE, 0x6d0f, 0x28 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_GET_PROPERTIES", _IOC_READ, 0x6d04, 0x30 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_COMPTAG_SET", _IOC_WRITE, 0x6d02, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_HDID_SET", _IOC_WRITE, 0x6d01, 0x02 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_PORT_IDX_GET", _IOC_READ, 0x6d03, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_LOCAL", _IOC_READ, 0x6d05, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_REMOTE", _IOC_READ, 0x6d07, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_LOCAL", _IOC_WRITE, 0x6d06, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_REMOTE", _IOC_WRITE, 0x6d08, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_SET_EVENT_MASK", _IOC_WRITE, 0x6d0d, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_TRANSFER", _IOC_READ|_IOC_WRITE, 0x6d15, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_UNMAP_INBOUND", _IOC_WRITE, 0x6d12, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_UNMAP_OUTBOUND", _IOC_WRITE, 0x6d10, 0x28 },
+{ "linux/rio_mport_cdev.h", "RIO_WAIT_FOR_ASYNC", _IOC_WRITE, 0x6d16, 0x08 },
 { "linux/rtc.h", "RTC_AIE_OFF", _IOC_NONE, 0x7002, 0x00 },
 { "linux/rtc.h", "RTC_AIE_ON", _IOC_NONE, 0x7001, 0x00 },
 { "linux/rtc.h", "RTC_ALM_READ", _IOC_READ, 0x7008, 0x24 },
@@ -2081,6 +2119,11 @@
 { "linux/usb/iowarrior.h", "IOW_GETINFO", _IOC_READ, 0xc003, 0x28 },
 { "linux/usb/iowarrior.h", "IOW_READ", _IOC_WRITE, 0xc002, 0x04 },
 { "linux/usb/iowarrior.h", "IOW_WRITE", _IOC_WRITE, 0xc001, 0x04 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GET_CAPS", _IOC_READ, 0x5b11, 0x01 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GOTO_LOCAL", _IOC_NONE, 0x5b14, 0x00 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_READ_STB", _IOC_READ, 0x5b12, 0x01 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_REN_CONTROL", _IOC_WRITE, 0x5b13, 0x01 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_IN", _IOC_NONE, 0x5b04, 0x00 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_OUT", _IOC_NONE, 0x5b03, 0x00 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR", _IOC_NONE, 0x5b02, 0x00 },
@@ -2102,6 +2145,7 @@
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCONNECT_CLAIM", _IOC_READ, 0x551b, 0x108 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL", _IOC_READ, 0x550e, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL32", _IOC_READ, 0x550e, 0x08 },
+{ "linux/usbdevice_fs.h", "USBDEVFS_DROP_PRIVILEGES", _IOC_WRITE, 0x551e, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_FREE_STREAMS", _IOC_READ, 0x551d, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GETDRIVER", _IOC_WRITE, 0x5508, 0x104 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GET_CAPABILITIES", _IOC_READ, 0x551a, 0x04 },
@@ -2173,6 +2217,7 @@
 { "linux/vfio.h", "VFIO_SET_IOMMU", _IOC_NONE, 0x3b66, 0x00 },
 { "linux/vhost.h", "VHOST_GET_FEATURES", _IOC_READ, 0xaf00, 0x08 },
 { "linux/vhost.h", "VHOST_GET_VRING_BASE", _IOC_READ|_IOC_WRITE, 0xaf12, 0x08 },
+{ "linux/vhost.h", "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf24, 0x08 },
 { "linux/vhost.h", "VHOST_GET_VRING_ENDIAN", _IOC_WRITE, 0xaf14, 0x08 },
 { "linux/vhost.h", "VHOST_NET_SET_BACKEND", _IOC_WRITE, 0xaf30, 0x08 },
 { "linux/vhost.h", "VHOST_RESET_OWNER", _IOC_NONE, 0xaf02, 0x00 },
@@ -2188,6 +2233,7 @@
 { "linux/vhost.h", "VHOST_SET_OWNER", _IOC_NONE, 0xaf01, 0x00 },
 { "linux/vhost.h", "VHOST_SET_VRING_ADDR", _IOC_WRITE, 0xaf11, 0x28 },
 { "linux/vhost.h", "VHOST_SET_VRING_BASE", _IOC_WRITE, 0xaf12, 0x08 },
+{ "linux/vhost.h", "VHOST_SET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf23, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_CALL", _IOC_WRITE, 0xaf21, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_ENDIAN", _IOC_WRITE, 0xaf13, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
@@ -2392,9 +2438,11 @@
 { "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x80 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_RX_NOTIFY", _IOC_WRITE, 0x7600, 0x04 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_TX_NOTIFY", _IOC_WRITE, 0x7601, 0x04 },
+{ "misc/cxl.h", "CXL_IOCTL_DOWNLOAD_IMAGE", _IOC_WRITE, 0xca0a, 0x40 },
 { "misc/cxl.h", "CXL_IOCTL_GET_AFU_ID", _IOC_READ, 0xca02, 0x40 },
 { "misc/cxl.h", "CXL_IOCTL_GET_PROCESS_ELEMENT", _IOC_READ, 0xca01, 0x04 },
 { "misc/cxl.h", "CXL_IOCTL_START_WORK", _IOC_WRITE, 0xca00, 0x40 },
+{ "misc/cxl.h", "CXL_IOCTL_VALIDATE_IMAGE", _IOC_WRITE, 0xca0b, 0x40 },
 { "mtd/mtd-abi.h", "ECCGETLAYOUT", _IOC_READ, 0x4d11, 0x148 },
 { "mtd/mtd-abi.h", "ECCGETSTATS", _IOC_READ, 0x4d12, 0x10 },
 { "mtd/mtd-abi.h", "MEMERASE", _IOC_WRITE, 0x4d02, 0x08 },
@@ -2516,7 +2564,6 @@
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_PORT_INFO", _IOC_READ|_IOC_WRITE, 0x5322, 0xa4 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", _IOC_READ|_IOC_WRITE, 0x5349, 0x4c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5334, 0x8c },
-{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER", _IOC_READ|_IOC_WRITE, 0x5343, 0x00 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS", _IOC_READ|_IOC_WRITE, 0x5340, 0x5c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO", _IOC_READ|_IOC_WRITE, 0x5341, 0x2c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER", _IOC_READ|_IOC_WRITE, 0x5345, 0x60 },
@@ -2532,7 +2579,6 @@
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_PORT_INFO", _IOC_WRITE, 0x5323, 0xa4 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", _IOC_WRITE, 0x534a, 0x4c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5335, 0x8c },
-{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER", _IOC_WRITE, 0x5344, 0x00 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", _IOC_WRITE, 0x5342, 0x2c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER", _IOC_WRITE, 0x5346, 0x60 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT", _IOC_WRITE, 0x5330, 0x50 },
@@ -2711,7 +2757,6 @@
 { "staging/android/sw_sync.h", "SW_SYNC_IOC_INC", _IOC_WRITE, 0x5701, 0x04 },
 { "staging/android/sync.h", "SYNC_IOC_FENCE_INFO", _IOC_READ|_IOC_WRITE, 0x3e02, 0x28 },
 { "staging/android/sync.h", "SYNC_IOC_MERGE", _IOC_READ|_IOC_WRITE, 0x3e01, 0x28 },
-{ "staging/android/sync.h", "SYNC_IOC_WAIT", _IOC_WRITE, 0x3e00, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
 { "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
diff --git a/linux/32/syscallent.h b/linux/32/syscallent.h
index 03874ac..9c86485 100644
--- a/linux/32/syscallent.h
+++ b/linux/32/syscallent.h
@@ -276,6 +276,8 @@
 [283] = { 2,	0,		SEN(membarrier),		"membarrier",		},
 [284] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [285] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
+[286] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[287] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 #undef sys_ARCH_mmap
 #undef ARCH_WANT_SYNC_FILE_RANGE2
diff --git a/linux/64/ioctls_inc.h b/linux/64/ioctls_inc.h
index 796a49f..4386e34 100644
--- a/linux/64/ioctls_inc.h
+++ b/linux/64/ioctls_inc.h
@@ -195,6 +195,7 @@
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST", _IOC_READ|_IOC_WRITE, 0x6461, 0x28 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_GET", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
+{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_MAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_CMD_CTRL", _IOC_READ|_IOC_WRITE, 0x6473, 0x08 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_GET_PROPERTY", _IOC_READ|_IOC_WRITE, 0x6470, 0x50 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF", _IOC_READ|_IOC_WRITE, 0x6472, 0x28 },
@@ -715,6 +716,7 @@
 { "linux/dm-ioctl.h", "DM_TABLE_STATUS", _IOC_READ|_IOC_WRITE, 0xfd0c, 0x138 },
 { "linux/dm-ioctl.h", "DM_TARGET_MSG", _IOC_READ|_IOC_WRITE, 0xfd0e, 0x138 },
 { "linux/dm-ioctl.h", "DM_VERSION", _IOC_READ|_IOC_WRITE, 0xfd00, 0x138 },
+{ "linux/dma-buf.h", "DMA_BUF_IOCTL_SYNC", _IOC_WRITE, 0x6200, 0x08 },
 { "linux/dn.h", "OSIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
 { "linux/dn.h", "OSIOCSNETADDR", _IOC_WRITE, 0x89e0, 0x04 },
 { "linux/dn.h", "SIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
@@ -926,8 +928,11 @@
 { "linux/fs.h", "FS_IOC_FSSETXATTR", _IOC_WRITE, 0x5820, 0x1c },
 { "linux/fs.h", "FS_IOC_GETFLAGS", _IOC_READ, 0x6601, 0x08 },
 { "linux/fs.h", "FS_IOC_GETVERSION", _IOC_READ, 0x7601, 0x08 },
+{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
+{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
 { "linux/fs.h", "FS_IOC_SETFLAGS", _IOC_WRITE, 0x6602, 0x08 },
 { "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x08 },
+{ "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
 { "linux/fsl-diu-fb.h", "MFB_GET_ALPHA", _IOC_READ, 0x4d00, 0x01 },
 { "linux/fsl-diu-fb.h", "MFB_GET_AOID", _IOC_READ, 0x4d04, 0x08 },
 { "linux/fsl-diu-fb.h", "MFB_GET_GAMMA", _IOC_READ, 0x4d01, 0x01 },
@@ -964,6 +969,8 @@
 { "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
+{ "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
+{ "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
 { "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
 { "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
 { "linux/gsmmux.h", "GSMIOC_GETCONF", _IOC_READ, 0x4700, 0x4c },
@@ -1221,6 +1228,9 @@
 { "linux/joystick.h", "JSIOCSAXMAP", _IOC_WRITE, 0x6a31, 0x40 },
 { "linux/joystick.h", "JSIOCSBTNMAP", _IOC_WRITE, 0x6a33, 0x400 },
 { "linux/joystick.h", "JSIOCSCORR", _IOC_WRITE, 0x6a21, 0x24 },
+{ "linux/kcov.h", "KCOV_DISABLE", _IOC_NONE, 0x6365, 0x00 },
+{ "linux/kcov.h", "KCOV_ENABLE", _IOC_NONE, 0x6364, 0x00 },
+{ "linux/kcov.h", "KCOV_INIT_TRACE", _IOC_READ, 0x6301, 0x08 },
 { "linux/kd.h", "GIO_CMAP", 0, 0x4B70, 0 },
 { "linux/kd.h", "GIO_FONT", 0, 0x4B60, 0 },
 { "linux/kd.h", "GIO_FONTX", 0, 0x4B6B, 0 },
@@ -1298,6 +1308,7 @@
 { "linux/kvm.h", "KVM_CREATE_PIT", _IOC_NONE, 0xae64, 0x00 },
 { "linux/kvm.h", "KVM_CREATE_PIT2", _IOC_WRITE, 0xae77, 0x40 },
 { "linux/kvm.h", "KVM_CREATE_SPAPR_TCE", _IOC_WRITE, 0xaea8, 0x0c },
+{ "linux/kvm.h", "KVM_CREATE_SPAPR_TCE_64", _IOC_WRITE, 0xaea8, 0x20 },
 { "linux/kvm.h", "KVM_CREATE_VCPU", _IOC_NONE, 0xae41, 0x00 },
 { "linux/kvm.h", "KVM_CREATE_VM", _IOC_NONE, 0xae01, 0x00 },
 { "linux/kvm.h", "KVM_DEASSIGN_DEV_IRQ", _IOC_WRITE, 0xae75, 0x40 },
@@ -1469,6 +1480,7 @@
 { "linux/media.h", "MEDIA_IOC_DEVICE_INFO", _IOC_READ|_IOC_WRITE, 0x7c00, 0x100 },
 { "linux/media.h", "MEDIA_IOC_ENUM_ENTITIES", _IOC_READ|_IOC_WRITE, 0x7c01, 0x100 },
 { "linux/media.h", "MEDIA_IOC_ENUM_LINKS", _IOC_READ|_IOC_WRITE, 0x7c02, 0x28 },
+{ "linux/media.h", "MEDIA_IOC_G_TOPOLOGY", _IOC_READ|_IOC_WRITE, 0x7c04, 0x48 },
 { "linux/media.h", "MEDIA_IOC_SETUP_LINK", _IOC_READ|_IOC_WRITE, 0x7c03, 0x34 },
 { "linux/mei.h", "IOCTL_MEI_CONNECT_CLIENT", _IOC_READ|_IOC_WRITE, 0x4801, 0x10 },
 { "linux/mei.h", "IOCTL_MEI_NOTIFY_GET", _IOC_READ, 0x4803, 0x04 },
@@ -1532,6 +1544,7 @@
 { "linux/ndctl.h", "ND_IOCTL_ARS_CAP", _IOC_READ|_IOC_WRITE, 0x4e01, 0x20 },
 { "linux/ndctl.h", "ND_IOCTL_ARS_START", _IOC_READ|_IOC_WRITE, 0x4e02, 0x20 },
 { "linux/ndctl.h", "ND_IOCTL_ARS_STATUS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x30 },
+{ "linux/ndctl.h", "ND_IOCTL_CLEAR_ERROR", _IOC_READ|_IOC_WRITE, 0x4e04, 0x20 },
 { "linux/ndctl.h", "ND_IOCTL_DIMM_FLAGS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x08 },
 { "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_DATA", _IOC_READ|_IOC_WRITE, 0x4e05, 0x0c },
 { "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_SIZE", _IOC_READ|_IOC_WRITE, 0x4e04, 0x0c },
@@ -1688,6 +1701,7 @@
 { "linux/ptp_clock.h", "PTP_PIN_GETFUNC", _IOC_READ|_IOC_WRITE, 0x3d06, 0x60 },
 { "linux/ptp_clock.h", "PTP_PIN_SETFUNC", _IOC_WRITE, 0x3d07, 0x60 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET", _IOC_WRITE, 0x3d05, 0x340 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE", _IOC_READ|_IOC_WRITE, 0x3d08, 0x40 },
 { "linux/radeonfb.h", "FBIO_RADEON_GET_MIRROR", _IOC_READ, 0x4003, 0x08 },
 { "linux/radeonfb.h", "FBIO_RADEON_SET_MIRROR", _IOC_WRITE, 0x4004, 0x08 },
 { "linux/raid/md_u.h", "ADD_NEW_DISK", _IOC_WRITE, 0x0921, 0x14 },
@@ -1722,6 +1736,30 @@
 { "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
 { "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x08 },
 { "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
+{ "linux/rio_mport_cdev.h", "RIO_ALLOC_DMA", _IOC_READ|_IOC_WRITE, 0x6d13, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_DEV_ADD", _IOC_WRITE, 0x6d17, 0x20 },
+{ "linux/rio_mport_cdev.h", "RIO_DEV_DEL", _IOC_WRITE, 0x6d18, 0x20 },
+{ "linux/rio_mport_cdev.h", "RIO_DISABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d0a, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_DISABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0c, 0x10 },
+{ "linux/rio_mport_cdev.h", "RIO_ENABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d09, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_ENABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0b, 0x10 },
+{ "linux/rio_mport_cdev.h", "RIO_FREE_DMA", _IOC_WRITE, 0x6d14, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_GET_EVENT_MASK", _IOC_READ, 0x6d0e, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_MAP_INBOUND", _IOC_READ|_IOC_WRITE, 0x6d11, 0x28 },
+{ "linux/rio_mport_cdev.h", "RIO_MAP_OUTBOUND", _IOC_READ|_IOC_WRITE, 0x6d0f, 0x28 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_GET_PROPERTIES", _IOC_READ, 0x6d04, 0x30 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_COMPTAG_SET", _IOC_WRITE, 0x6d02, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_HDID_SET", _IOC_WRITE, 0x6d01, 0x02 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_PORT_IDX_GET", _IOC_READ, 0x6d03, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_LOCAL", _IOC_READ, 0x6d05, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_REMOTE", _IOC_READ, 0x6d07, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_LOCAL", _IOC_WRITE, 0x6d06, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_REMOTE", _IOC_WRITE, 0x6d08, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_SET_EVENT_MASK", _IOC_WRITE, 0x6d0d, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_TRANSFER", _IOC_READ|_IOC_WRITE, 0x6d15, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_UNMAP_INBOUND", _IOC_WRITE, 0x6d12, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_UNMAP_OUTBOUND", _IOC_WRITE, 0x6d10, 0x28 },
+{ "linux/rio_mport_cdev.h", "RIO_WAIT_FOR_ASYNC", _IOC_WRITE, 0x6d16, 0x08 },
 { "linux/rtc.h", "RTC_AIE_OFF", _IOC_NONE, 0x7002, 0x00 },
 { "linux/rtc.h", "RTC_AIE_ON", _IOC_NONE, 0x7001, 0x00 },
 { "linux/rtc.h", "RTC_ALM_READ", _IOC_READ, 0x7008, 0x24 },
@@ -2081,6 +2119,11 @@
 { "linux/usb/iowarrior.h", "IOW_GETINFO", _IOC_READ, 0xc003, 0x28 },
 { "linux/usb/iowarrior.h", "IOW_READ", _IOC_WRITE, 0xc002, 0x08 },
 { "linux/usb/iowarrior.h", "IOW_WRITE", _IOC_WRITE, 0xc001, 0x08 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GET_CAPS", _IOC_READ, 0x5b11, 0x01 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GOTO_LOCAL", _IOC_NONE, 0x5b14, 0x00 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_READ_STB", _IOC_READ, 0x5b12, 0x01 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_REN_CONTROL", _IOC_WRITE, 0x5b13, 0x01 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_IN", _IOC_NONE, 0x5b04, 0x00 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_OUT", _IOC_NONE, 0x5b03, 0x00 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR", _IOC_NONE, 0x5b02, 0x00 },
@@ -2102,6 +2145,7 @@
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCONNECT_CLAIM", _IOC_READ, 0x551b, 0x108 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL", _IOC_READ, 0x550e, 0x10 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL32", _IOC_READ, 0x550e, 0x08 },
+{ "linux/usbdevice_fs.h", "USBDEVFS_DROP_PRIVILEGES", _IOC_WRITE, 0x551e, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_FREE_STREAMS", _IOC_READ, 0x551d, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GETDRIVER", _IOC_WRITE, 0x5508, 0x104 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GET_CAPABILITIES", _IOC_READ, 0x551a, 0x04 },
@@ -2173,6 +2217,7 @@
 { "linux/vfio.h", "VFIO_SET_IOMMU", _IOC_NONE, 0x3b66, 0x00 },
 { "linux/vhost.h", "VHOST_GET_FEATURES", _IOC_READ, 0xaf00, 0x08 },
 { "linux/vhost.h", "VHOST_GET_VRING_BASE", _IOC_READ|_IOC_WRITE, 0xaf12, 0x08 },
+{ "linux/vhost.h", "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf24, 0x08 },
 { "linux/vhost.h", "VHOST_GET_VRING_ENDIAN", _IOC_WRITE, 0xaf14, 0x08 },
 { "linux/vhost.h", "VHOST_NET_SET_BACKEND", _IOC_WRITE, 0xaf30, 0x08 },
 { "linux/vhost.h", "VHOST_RESET_OWNER", _IOC_NONE, 0xaf02, 0x00 },
@@ -2188,6 +2233,7 @@
 { "linux/vhost.h", "VHOST_SET_OWNER", _IOC_NONE, 0xaf01, 0x00 },
 { "linux/vhost.h", "VHOST_SET_VRING_ADDR", _IOC_WRITE, 0xaf11, 0x28 },
 { "linux/vhost.h", "VHOST_SET_VRING_BASE", _IOC_WRITE, 0xaf12, 0x08 },
+{ "linux/vhost.h", "VHOST_SET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf23, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_CALL", _IOC_WRITE, 0xaf21, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_ENDIAN", _IOC_WRITE, 0xaf13, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
@@ -2392,9 +2438,11 @@
 { "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x88 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_RX_NOTIFY", _IOC_WRITE, 0x7600, 0x04 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_TX_NOTIFY", _IOC_WRITE, 0x7601, 0x04 },
+{ "misc/cxl.h", "CXL_IOCTL_DOWNLOAD_IMAGE", _IOC_WRITE, 0xca0a, 0x40 },
 { "misc/cxl.h", "CXL_IOCTL_GET_AFU_ID", _IOC_READ, 0xca02, 0x40 },
 { "misc/cxl.h", "CXL_IOCTL_GET_PROCESS_ELEMENT", _IOC_READ, 0xca01, 0x04 },
 { "misc/cxl.h", "CXL_IOCTL_START_WORK", _IOC_WRITE, 0xca00, 0x40 },
+{ "misc/cxl.h", "CXL_IOCTL_VALIDATE_IMAGE", _IOC_WRITE, 0xca0b, 0x40 },
 { "mtd/mtd-abi.h", "ECCGETLAYOUT", _IOC_READ, 0x4d11, 0x148 },
 { "mtd/mtd-abi.h", "ECCGETSTATS", _IOC_READ, 0x4d12, 0x10 },
 { "mtd/mtd-abi.h", "MEMERASE", _IOC_WRITE, 0x4d02, 0x08 },
@@ -2516,7 +2564,6 @@
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_PORT_INFO", _IOC_READ|_IOC_WRITE, 0x5322, 0xa8 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", _IOC_READ|_IOC_WRITE, 0x5349, 0x4c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5334, 0x8c },
-{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER", _IOC_READ|_IOC_WRITE, 0x5343, 0x00 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS", _IOC_READ|_IOC_WRITE, 0x5340, 0x5c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO", _IOC_READ|_IOC_WRITE, 0x5341, 0x2c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER", _IOC_READ|_IOC_WRITE, 0x5345, 0x60 },
@@ -2532,7 +2579,6 @@
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_PORT_INFO", _IOC_WRITE, 0x5323, 0xa8 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", _IOC_WRITE, 0x534a, 0x4c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5335, 0x8c },
-{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER", _IOC_WRITE, 0x5344, 0x00 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", _IOC_WRITE, 0x5342, 0x2c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER", _IOC_WRITE, 0x5346, 0x60 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT", _IOC_WRITE, 0x5330, 0x50 },
@@ -2711,7 +2757,6 @@
 { "staging/android/sw_sync.h", "SW_SYNC_IOC_INC", _IOC_WRITE, 0x5701, 0x04 },
 { "staging/android/sync.h", "SYNC_IOC_FENCE_INFO", _IOC_READ|_IOC_WRITE, 0x3e02, 0x28 },
 { "staging/android/sync.h", "SYNC_IOC_MERGE", _IOC_READ|_IOC_WRITE, 0x3e01, 0x28 },
-{ "staging/android/sync.h", "SYNC_IOC_WAIT", _IOC_WRITE, 0x3e00, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
 { "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
diff --git a/linux/64/syscallent.h b/linux/64/syscallent.h
index fc78605..55c011c 100644
--- a/linux/64/syscallent.h
+++ b/linux/64/syscallent.h
@@ -269,3 +269,5 @@
 [283] = { 2,	0,		SEN(membarrier),		"membarrier",		},
 [284] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [285] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
+[286] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[287] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
diff --git a/linux/alpha/syscallent.h b/linux/alpha/syscallent.h
index 1bddd24..eaa316f 100644
--- a/linux/alpha/syscallent.h
+++ b/linux/alpha/syscallent.h
@@ -212,7 +212,7 @@
 [206] = { 3,	TI,		SEN(semop),			"semop"			},
 [207] = { 1,	0,		SEN(printargs),			"osf_utsname"		},
 [208] = { 3,	TF,		SEN(chown),			"lchown"		},
-[209] = { 3,	TI|TM,		SEN(printargs),			"osf_shmat"		},
+[209] = { 3,	TI|TM|SI,	SEN(shmat),			"osf_shmat"		},
 [210] = { 3,	TI,		SEN(shmctl),			"shmctl"		},
 [211] = { 1,	TI|TM|SI,	SEN(shmdt),			"shmdt"			},
 [212] = { 3,	TI,		SEN(shmget),			"shmget"		},
@@ -230,8 +230,8 @@
 [224] = { 5,	0,		SEN(printargs),			"osf_stat"		}, /*not implemented */
 [225] = { 5,	0,		SEN(printargs),			"osf_lstat"		}, /*not implemented */
 [226] = { 5,	0,		SEN(printargs),			"osf_fstat"		}, /*not implemented */
-[227] = { 5,	0,		SEN(printargs),			"osf_statfs64"		}, /*not implemented */
-[228] = { 5,	0,		SEN(printargs),			"osf_fstatfs64"		}, /*not implemented */
+[227] = { 3,	0,		SEN(osf_statfs),		"osf_statfs64"		}, /*not implemented */
+[228] = { 3,	0,		SEN(osf_fstatfs),		"osf_fstatfs64"		}, /*not implemented */
 [229 ... 232] = { },
 [233] = { 1,	0,		SEN(getpgid),			"getpgid"		},
 [234] = { 1,	0,		SEN(getsid),			"getsid"		},
diff --git a/linux/arc/syscallent.h b/linux/arc/syscallent.h
index 1100008..c2db91a 100644
--- a/linux/arc/syscallent.h
+++ b/linux/arc/syscallent.h
@@ -1,6 +1,6 @@
 #define sys_ARCH_mmap sys_mmap_pgoff
 #include "32/syscallent.h"
+/* [244 ... 259] are arch specific */
 [244] = { 3,	0,	SEN(printargs),	"arc_cacheflush"},
 [245] = { 1,	0,	SEN(printargs),	"arc_settls"	},
 [246] = { 0,	0,	SEN(printargs),	"arc_gettls"	},
-[247 ... 259] = { },
diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h
index a94bedc..18910e4 100644
--- a/linux/arm/syscallent.h
+++ b/linux/arm/syscallent.h
@@ -416,7 +416,8 @@
 [389] = { 2,	0,		SEN(membarrier),		"membarrier",		},
 [390] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [391] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
-[392 ... 399] = { },
+[392] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[393] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 #ifdef __ARM_EABI__
 # define ARM_FIRST_SHUFFLED_SYSCALL 400
diff --git a/linux/avr32/syscallent.h b/linux/avr32/syscallent.h
index de90634..0b4ceac 100644
--- a/linux/avr32/syscallent.h
+++ b/linux/avr32/syscallent.h
@@ -305,7 +305,7 @@
 [277] = { 3,	TI,		SEN(shmctl),			"shmctl"		},
 [278] = { 4,	TD|TF,		SEN(utimensat),			"utimensat"		},
 [279] = { 3,	TD|TS,		SEN(signalfd),			"signalfd"		},
-[280] = { 2,	TD,		SEN(timerfd),			"timerfd"		},
+[280] = { 4,	TD,		SEN(timerfd),			"timerfd"		},
 [281] = { 1,	TD,		SEN(eventfd),			"eventfd"		},
 [282] = { },
 [283] = { 2,	TD,		SEN(setns),			"setns"			},
diff --git a/linux/dummy.h b/linux/dummy.h
index 984b290..bb23f5d 100644
--- a/linux/dummy.h
+++ b/linux/dummy.h
@@ -147,6 +147,7 @@
 #define	sys_query_module	printargs
 #define	sys_security		printargs
 #define	sys_stty		printargs
+#define	sys_timerfd		printargs
 #define	sys_tuxcall		printargs
 #define	sys_ulimit		printargs
 #define	sys_ustat		printargs
diff --git a/linux/hppa/errnoent.h b/linux/hppa/errnoent.h
index c78c03f..896980b 100644
--- a/linux/hppa/errnoent.h
+++ b/linux/hppa/errnoent.h
@@ -128,7 +128,7 @@
 [249] = "ELOOP",
 [251] = "ENOSYS",
 [252] = "ENOTSUP",
-[253] = "ECANCELLED",
+[253] = "ECANCELED",
 [254] = "EOWNERDEAD",
 [255] = "ENOTRECOVERABLE",
 [256] = "ERFKILL",
diff --git a/linux/hppa/syscallent.h b/linux/hppa/syscallent.h
index a22e73e..4928047 100644
--- a/linux/hppa/syscallent.h
+++ b/linux/hppa/syscallent.h
@@ -349,3 +349,5 @@
 [344] = { 1,	TD,		SEN(userfaultfd),		"userfaultfd",		},
 [345] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [346] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
+[347] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[348] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
diff --git a/linux/i386/syscallent.h b/linux/i386/syscallent.h
index f91fe1d..d6175fa 100644
--- a/linux/i386/syscallent.h
+++ b/linux/i386/syscallent.h
@@ -403,7 +403,8 @@
 [375] = { 2,	0,		SEN(membarrier),		"membarrier",		},
 [376] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [377] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
-[378 ... 399] = { },
+[378] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[379] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/ia64/syscallent.h b/linux/ia64/syscallent.h
index 911e21f..713cab8 100644
--- a/linux/ia64/syscallent.h
+++ b/linux/ia64/syscallent.h
@@ -364,3 +364,5 @@
 [1345] = { 5,	0,		SEN(kcmp),			"kcmp"			},
 [1346] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [1347] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
+[1348] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[1349] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h
index 23d507d..0f4895c 100644
--- a/linux/m68k/syscallent.h
+++ b/linux/m68k/syscallent.h
@@ -402,7 +402,8 @@
 [374] = { 2,	0,		SEN(membarrier),		"membarrier",		},
 [375] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [376] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
-[377 ... 399] = { },
+[377] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[378] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/metag/syscallent.h b/linux/metag/syscallent.h
index b2d1e66..82ad55b 100644
--- a/linux/metag/syscallent.h
+++ b/linux/metag/syscallent.h
@@ -1,7 +1,6 @@
 #include "32/syscallent.h"
-[244] = { },
+/* [244 ... 259] are arch specific */
 [245] = { 2,	0,	SEN(printargs),	"metag_setglobalbit"	},
 [246] = { 1,	0,	SEN(printargs),	"metag_set_fpu_flags"	},
 [247] = { 1,	0,	SEN(printargs),	"metag_set_tls"		},
 [248] = { 0,	NF,	SEN(printargs),	"metag_get_tls"		},
-[249 ... 259] = { },
diff --git a/linux/mips/syscallent-compat.h b/linux/mips/syscallent-compat.h
index 85bbff1..82a373b 100644
--- a/linux/mips/syscallent-compat.h
+++ b/linux/mips/syscallent-compat.h
@@ -149,8 +149,6 @@
 [ 207] = { 0,	0,	SEN(printargs),		"svr4_areadv"	},
 [ 208] = { 0,	0,	SEN(printargs),		"svr4_awritev"	},
 
-[209 ... 999] = { }, /* end of SVR4 */
-
 [1000] = { 0,	0,	SEN(printargs),		"sysv_syscall"	}, /* start of SYSV */
 [1001] = { 0,	0,	SEN(printargs),		"sysv_exit"	},
 [1002] = { 0,	0,	SEN(printargs),		"sysv_fork"	},
@@ -336,8 +334,6 @@
 [1187] = { 0,	0,	SEN(printargs),		"sysv_pread"	},
 [1188] = { 0,	0,	SEN(printargs),		"sysv_pwrite"	},
 
-[1189 ... 1999] = { }, /* end of SYSV */
-
 [2000] = { 0,	0,	SEN(printargs),		"bsd43_syscall"	}, /* start of BSD 4.3 */
 [2001] = { 0,	0,	SEN(printargs),		"bsd43_exit"	},
 [2002] = { 0,	0,	SEN(printargs),		"bsd43_fork"	},
@@ -531,8 +527,6 @@
 [2190] = { 0,	0,	SEN(printargs),		"bsd43_areadv"	},
 [2191] = { 0,	0,	SEN(printargs),		"bsd43_awritev"	},
 
-[2192 ... 2999] = { }, /* end of BSD 4.3 */
-
 [3000] = { 0,	0,	SEN(printargs),		"posix_syscall"	}, /* start of POSIX */
 [3001] = { 0,	0,	SEN(printargs),		"posix_exit"	},
 [3002] = { 0,	0,	SEN(printargs),		"posix_fork"	},
@@ -704,5 +698,3 @@
 [3266] = { 0,	0,	SEN(printargs),		"posix_sigprocmask"	},
 [3267] = { 0,	0,	SEN(printargs),		"posix_sigsuspend"	},
 [3268] = { 0,	0,	SEN(printargs),		"posix_sigaction"	},
-
-[3269 ... 3999] = { }, /* end of POSIX */
diff --git a/linux/mips/syscallent-n32.h b/linux/mips/syscallent-n32.h
index 57d9fb1..398b12c 100644
--- a/linux/mips/syscallent-n32.h
+++ b/linux/mips/syscallent-n32.h
@@ -325,7 +325,8 @@
 [6322] = { 2,	0,		SEN(membarrier),		"membarrier",		},
 [6323] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [6324] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
-[6325 ... 6399] = { },
+[6325] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[6326] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 # define SYS_socket_subcall      6400
 # include "subcall.h"
diff --git a/linux/mips/syscallent-n64.h b/linux/mips/syscallent-n64.h
index 170b6ee..7321f0e 100644
--- a/linux/mips/syscallent-n64.h
+++ b/linux/mips/syscallent-n64.h
@@ -321,16 +321,14 @@
 [5318] = { 2,	0,		SEN(membarrier),		"membarrier",		},
 [5319] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [5320] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
-[5321 ... 5399] = { },
+[5321] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[5322] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 # define SYS_socket_subcall      5400
 # include "subcall.h"
 
-/* end of Linux N64 */ [SYS_socket_subcall + SYS_socket_nsubcalls + SYS_ipc_nsubcalls ... 5999] = { },
-
 #else
 
 # include "syscallent-n64-stub.h"
-/* end of Linux N64 */ [5400 ... 5999] = { },
 
 #endif
diff --git a/linux/mips/syscallent-o32.h b/linux/mips/syscallent-o32.h
index 7a75abd..cb8afb9 100644
--- a/linux/mips/syscallent-o32.h
+++ b/linux/mips/syscallent-o32.h
@@ -110,7 +110,7 @@
 [4107] = { 2,	TF,		SEN(lstat),			"lstat"			},
 [4108] = { 2,	TD,		SEN(fstat),			"fstat"			},
 [4109] = { 1,	0,		SEN(olduname),			"olduname"		},
-[4110] = { 0,	0,		SEN(iopl),			"iopl"			},
+[4110] = { 1,	0,		SEN(iopl),			"iopl"			},
 [4111] = { 0,	0,		SEN(vhangup),			"vhangup"		},
 [4112] = { 0,	0,		SEN(idle),			"idle"			},
 [4113] = { 5,	0,		SEN(vm86old),			"vm86"			},
@@ -361,16 +361,14 @@
 [4358] = { 2,	0,		SEN(membarrier),		"membarrier",		},
 [4359] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [4360] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
-[4361 ... 4399] = { },
+[4361] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[4362] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 # define SYS_socket_subcall      4400
 # include "subcall.h"
 
-/* end of Linux o32 */ [SYS_socket_subcall + SYS_socket_nsubcalls + SYS_ipc_nsubcalls ... 4999] = { },
-
 #else
 
 # include "syscallent-o32-stub.h"
-/* end of Linux o32 */ [4400 ... 4999] = { },
 
 #endif
diff --git a/linux/netlink_diag.h b/linux/netlink_diag.h
new file mode 100644
index 0000000..276baa7
--- /dev/null
+++ b/linux/netlink_diag.h
@@ -0,0 +1,24 @@
+struct netlink_diag_req {
+	uint8_t sdiag_family;
+	uint8_t sdiag_protocol;
+	uint16_t pad;
+	uint32_t ndiag_ino;
+	uint32_t ndiag_show;
+	uint32_t ndiag_cookie[2];
+};
+
+struct netlink_diag_msg {
+	uint8_t ndiag_family;
+	uint8_t ndiag_type;
+	uint8_t ndiag_protocol;
+	uint8_t ndiag_state;
+
+	uint32_t ndiag_portid;
+	uint32_t ndiag_dst_portid;
+	uint32_t ndiag_dst_group;
+	uint32_t ndiag_ino;
+	uint32_t ndiag_cookie[2];
+};
+
+#define NDIAG_SHOW_MEMINFO           0x00000001
+#define NDIAG_PROTO_ALL              ((uint8_t) ~0)
diff --git a/linux/nios2/syscallent.h b/linux/nios2/syscallent.h
index 01efe3a..301fd0e 100644
--- a/linux/nios2/syscallent.h
+++ b/linux/nios2/syscallent.h
@@ -1,4 +1,4 @@
 #define sys_ARCH_mmap sys_mmap_pgoff
 #include "32/syscallent.h"
+/* [244 ... 259] are arch specific */
 [244] = {4,    0,	SEN(cacheflush), "cacheflush"},
-[245 ... 259] = { },
diff --git a/linux/or1k/syscallent.h b/linux/or1k/syscallent.h
index 351fe25..10af205 100644
--- a/linux/or1k/syscallent.h
+++ b/linux/or1k/syscallent.h
@@ -1,4 +1,4 @@
 #define sys_ARCH_mmap sys_mmap_pgoff
 #include "32/syscallent.h"
+/* [244 ... 259] are arch specific */
 [244] = { 3,	NF,	SEN(or1k_atomic),	"or1k_atomic"	},
-[245 ... 259] = { },
diff --git a/linux/powerpc/syscallent.h b/linux/powerpc/syscallent.h
index 8a79c9f..b6dfb85 100644
--- a/linux/powerpc/syscallent.h
+++ b/linux/powerpc/syscallent.h
@@ -136,7 +136,7 @@
 [107] = { 2,	TF,		SEN(lstat),			"lstat"			},
 [108] = { 2,	TD,		SEN(fstat),			"fstat"			},
 [109] = { 1,	0,		SEN(olduname),			"olduname"		},
-[110] = { 5,	0,		SEN(printargs),			"iopl"			},
+[110] = { 1,	0,		SEN(iopl),			"iopl"			},
 [111] = { 0,	0,		SEN(vhangup),			"vhangup"		},
 [112] = { 0,	0,		SEN(idle),			"idle"			},
 [113] = { 5,	0,		SEN(vm86),			"vm86"			},
@@ -406,7 +406,8 @@
 [377] = { 3,	TI,		SEN(shmctl),			"shmctl"		},
 [378] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [379] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
-[380 ... 399] = { },
+[380] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[381] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/powerpc64/syscallent.h b/linux/powerpc64/syscallent.h
index 685ee23..e0c18af 100644
--- a/linux/powerpc64/syscallent.h
+++ b/linux/powerpc64/syscallent.h
@@ -136,7 +136,7 @@
 [107] = { 2,	TF,		SEN(lstat),			"lstat"			},
 [108] = { 2,	TD,		SEN(fstat),			"fstat"			},
 [109] = { 1,	0,		SEN(olduname),			"olduname"		},
-[110] = { 5,	0,		SEN(printargs),			"iopl"			},
+[110] = { 1,	0,		SEN(iopl),			"iopl"			},
 [111] = { 0,	0,		SEN(vhangup),			"vhangup"		},
 [112] = { 0,	0,		SEN(idle),			"idle"			},
 [113] = { 5,	0,		SEN(vm86),			"vm86"			},
@@ -401,7 +401,8 @@
 [377] = { 3,	TI,		SEN(shmctl),			"shmctl"		},
 [378] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [379] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
-[380 ... 399] = { },
+[380] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[381] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/s390/syscallent.h b/linux/s390/syscallent.h
index 68ae7cb..af300e9 100644
--- a/linux/s390/syscallent.h
+++ b/linux/s390/syscallent.h
@@ -404,7 +404,8 @@
 [373] = { 2,	TN,		SEN(shutdown),			"shutdown"		},
 [374] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [375] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
-[376 ... 399] = { },
+[376] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[377] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/s390x/syscallent.h b/linux/s390x/syscallent.h
index 00ce24e..f41f2eb 100644
--- a/linux/s390x/syscallent.h
+++ b/linux/s390x/syscallent.h
@@ -388,7 +388,8 @@
 [373] = { 2,	TN,		SEN(shutdown),			"shutdown"		},
 [374] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [375] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
-[376 ... 399] = { },
+[376] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[377] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/sh/syscallent.h b/linux/sh/syscallent.h
index 95b1b59..d2b462d 100644
--- a/linux/sh/syscallent.h
+++ b/linux/sh/syscallent.h
@@ -394,6 +394,6 @@
 [366] = { 6,	0,		SEN(process_vm_writev),		"process_vm_writev"	},
 [367] = { 5,	0,		SEN(kcmp),			"kcmp"			},
 [368] = { 3,	TD,		SEN(finit_module),		"finit_module"		},
-[369 ... 399] = { },
+
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/sh64/syscallent.h b/linux/sh64/syscallent.h
index 0f9ad1a..3504881 100644
--- a/linux/sh64/syscallent.h
+++ b/linux/sh64/syscallent.h
@@ -403,6 +403,6 @@
 [377] = { 6,	0,		SEN(process_vm_writev),		"process_vm_writev"	},
 [378] = { 5,	0,		SEN(kcmp),			"kcmp"			},
 [379] = { 3,	TD,		SEN(finit_module),		"finit_module"		},
-[380 ... 399] = { },
+
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/sparc/syscallent.h b/linux/sparc/syscallent.h
index 4404b95..ec86f7e 100644
--- a/linux/sparc/syscallent.h
+++ b/linux/sparc/syscallent.h
@@ -356,7 +356,8 @@
 [355] = { 5,	TN,		SEN(setsockopt),		"setsockopt"		},
 [356] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [357] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
-[358 ... 399] = { },
+[358] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[359] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/sparc64/syscallent.h b/linux/sparc64/syscallent.h
index 2953215..8bf5c3a 100644
--- a/linux/sparc64/syscallent.h
+++ b/linux/sparc64/syscallent.h
@@ -354,7 +354,8 @@
 [355] = { 5,	TN,		SEN(setsockopt),		"setsockopt"		},
 [356] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [357] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
-[358 ... 399] = { },
+[358] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[359] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/tile/syscallent.h b/linux/tile/syscallent.h
index ee235f3..eb518fb 100644
--- a/linux/tile/syscallent.h
+++ b/linux/tile/syscallent.h
@@ -1,4 +1,4 @@
 #include "64/syscallent.h"
+/* [244 ... 259] are arch specific */
 [244] = { 1,	0,	SEN(printargs),	"cmpxchg_badaddr"	},
 [245] = { 3,	0,	SEN(printargs),	"cacheflush"		},
-[246 ... 259] = { },
diff --git a/linux/tile/syscallent1.h b/linux/tile/syscallent1.h
index 28dbab4..b305f06 100644
--- a/linux/tile/syscallent1.h
+++ b/linux/tile/syscallent1.h
@@ -1,6 +1,6 @@
 #define sys_ARCH_mmap sys_mmap_4koff
 #define ARCH_WANT_SYNC_FILE_RANGE2 1
 #include "32/syscallent.h"
+/* [244 ... 259] are arch specific */
 [244] = { 1,	0,	SEN(printargs),	"cmpxchg_badaddr"	},
 [245] = { 3,	0,	SEN(printargs),	"cacheflush"		},
-[246 ... 259] = { },
diff --git a/linux/x32/ioctls_inc0.h b/linux/x32/ioctls_inc0.h
index 5176116..5684dc6 100644
--- a/linux/x32/ioctls_inc0.h
+++ b/linux/x32/ioctls_inc0.h
@@ -81,6 +81,18 @@
 { "asm-generic/sockios.h", "SIOCGSTAMP", 0, 0x8906, 0 },
 { "asm-generic/sockios.h", "SIOCGSTAMPNS", 0, 0x8907, 0 },
 { "asm-generic/sockios.h", "SIOCSPGRP", 0, 0x8902, 0 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CTX", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x20 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_METADATA", _IOC_READ|_IOC_WRITE, 0x6446, 0x120 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_OP", _IOC_READ|_IOC_WRITE, 0x6450, 0x10 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6451, 0x18 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_VA", _IOC_WRITE, 0x6448, 0x28 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_INFO", _IOC_WRITE, 0x6445, 0x20 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x6449, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_ADD_BUFS", _IOC_READ|_IOC_WRITE, 0x6416, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_ADD_CTX", _IOC_READ|_IOC_WRITE, 0x6420, 0x08 },
 { "drm/drm.h", "DRM_IOCTL_ADD_DRAW", _IOC_READ|_IOC_WRITE, 0x6427, 0x04 },
@@ -118,11 +130,14 @@
 { "drm/drm.h", "DRM_IOCTL_MARK_BUFS", _IOC_WRITE, 0x6417, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_MODESET_CTL", _IOC_WRITE, 0x6408, 0x08 },
 { "drm/drm.h", "DRM_IOCTL_MODE_ADDFB", _IOC_READ|_IOC_WRITE, 0x64ae, 0x1c },
-{ "drm/drm.h", "DRM_IOCTL_MODE_ADDFB2", _IOC_READ|_IOC_WRITE, 0x64b8, 0x44 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_ADDFB2", _IOC_READ|_IOC_WRITE, 0x64b8, 0x68 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_ATOMIC", _IOC_READ|_IOC_WRITE, 0x64bc, 0x38 },
 { "drm/drm.h", "DRM_IOCTL_MODE_ATTACHMODE", _IOC_READ|_IOC_WRITE, 0x64a8, 0x48 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_CREATEPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64bd, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CREATE_DUMB", _IOC_READ|_IOC_WRITE, 0x64b2, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CURSOR", _IOC_READ|_IOC_WRITE, 0x64a3, 0x1c },
 { "drm/drm.h", "DRM_IOCTL_MODE_CURSOR2", _IOC_READ|_IOC_WRITE, 0x64bb, 0x24 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_DESTROYPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64be, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_MODE_DESTROY_DUMB", _IOC_READ|_IOC_WRITE, 0x64b4, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_MODE_DETACHMODE", _IOC_READ|_IOC_WRITE, 0x64a9, 0x48 },
 { "drm/drm.h", "DRM_IOCTL_MODE_DIRTYFB", _IOC_READ|_IOC_WRITE, 0x64b1, 0x18 },
@@ -166,11 +181,21 @@
 { "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_VERSION", _IOC_READ|_IOC_WRITE, 0x6400, 0x24 },
 { "drm/drm.h", "DRM_IOCTL_WAIT_VBLANK", _IOC_READ|_IOC_WRITE, 0x643a, 0x10 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_FINI", _IOC_WRITE, 0x6445, 0x08 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", _IOC_WRITE, 0x6444, 0x18 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x30 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6448, 0x18 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_WAIT", _IOC_WRITE, 0x6449, 0x20 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_EXEC", _IOC_READ|_IOC_WRITE, 0x6462, 0x08 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_GET_VER", _IOC_READ|_IOC_WRITE, 0x6460, 0x08 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST", _IOC_READ|_IOC_WRITE, 0x6461, 0x28 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_GET", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
+{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_MAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_CMD_CTRL", _IOC_READ|_IOC_WRITE, 0x6473, 0x08 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_GET_PROPERTY", _IOC_READ|_IOC_WRITE, 0x6470, 0x50 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF", _IOC_READ|_IOC_WRITE, 0x6472, 0x28 },
@@ -201,6 +226,8 @@
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_BUSY", _IOC_READ|_IOC_WRITE, 0x6457, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE", _IOC_READ|_IOC_WRITE, 0x646d, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", _IOC_WRITE, 0x646e, 0x08 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6474, 0x18 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM", _IOC_READ|_IOC_WRITE, 0x6475, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x645b, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_ENTERVT", _IOC_NONE, 0x6459, 0x00 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_EXECBUFFER", _IOC_WRITE, 0x6454, 0x28 },
@@ -211,7 +238,7 @@
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_INIT", _IOC_WRITE, 0x6453, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_LEAVEVT", _IOC_NONE, 0x645a, 0x00 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6466, 0x0c },
-{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x20 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x28 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_GTT", _IOC_READ|_IOC_WRITE, 0x6464, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PIN", _IOC_READ|_IOC_WRITE, 0x6455, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PREAD", _IOC_WRITE, 0x645c, 0x20 },
@@ -227,7 +254,7 @@
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6446, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID", _IOC_READ|_IOC_WRITE, 0x6465, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GET_RESET_STATS", _IOC_READ|_IOC_WRITE, 0x6472, 0x18 },
-{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646a, 0x14 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GET_VBLANK_PIPE", _IOC_READ, 0x644e, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_HWS_ADDR", _IOC_WRITE, 0x6451, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_INIT", _IOC_WRITE, 0x6440, 0x44 },
@@ -352,7 +379,7 @@
 { "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_GET_FLAGS", _IOC_READ|_IOC_WRITE, 0x644d, 0x08 },
 { "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_GET_TILING", _IOC_READ|_IOC_WRITE, 0x644b, 0x10 },
-{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
+{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
 { "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_SET_FLAGS", _IOC_READ|_IOC_WRITE, 0x644c, 0x08 },
 { "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_SET_TILING", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 },
 { "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GET_SYNCPT", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
@@ -362,6 +389,13 @@
 { "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_INCR", _IOC_READ|_IOC_WRITE, 0x6443, 0x08 },
 { "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_READ", _IOC_READ|_IOC_WRITE, 0x6442, 0x08 },
 { "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_WAIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_SHADER_BO", _IOC_READ|_IOC_WRITE, 0x6445, 0x18 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_BO", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_SEQNO", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_AGP_INIT", _IOC_READ|_IOC_WRITE, 0x6442, 0x08 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_ALLOCMEM", _IOC_READ|_IOC_WRITE, 0x6440, 0x14 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_BLIT_SYNC", _IOC_WRITE, 0x644f, 0x08 },
@@ -376,6 +410,15 @@
 { "drm/via_drm.h", "DRM_IOCTL_VIA_MAP_INIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x14 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_PCICMD", _IOC_WRITE, 0x644a, 0x08 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_WAIT_IRQ", _IOC_READ|_IOC_WRITE, 0x644d, 0x10 },
+{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_EXECBUFFER", _IOC_WRITE, 0x6442, 0x20 },
+{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
+{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_GET_CAPS", _IOC_READ|_IOC_WRITE, 0x6449, 0x18 },
+{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_MAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
+{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_RESOURCE_CREATE", _IOC_READ|_IOC_WRITE, 0x6444, 0x38 },
+{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_RESOURCE_INFO", _IOC_READ|_IOC_WRITE, 0x6445, 0x10 },
+{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_TRANSFER_FROM_HOST", _IOC_READ|_IOC_WRITE, 0x6446, 0x24 },
+{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_TRANSFER_TO_HOST", _IOC_READ|_IOC_WRITE, 0x6447, 0x24 },
+{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_WAIT", _IOC_READ|_IOC_WRITE, 0x6448, 0x08 },
 { "linux/agpgart.h", "AGPIOC_ACQUIRE", _IOC_NONE, 0x4101, 0x00 },
 { "linux/agpgart.h", "AGPIOC_ALLOCATE", _IOC_READ|_IOC_WRITE, 0x4106, 0x04 },
 { "linux/agpgart.h", "AGPIOC_BIND", _IOC_WRITE, 0x4108, 0x04 },
@@ -387,6 +430,7 @@
 { "linux/agpgart.h", "AGPIOC_RESERVE", _IOC_WRITE, 0x4104, 0x04 },
 { "linux/agpgart.h", "AGPIOC_SETUP", _IOC_WRITE, 0x4103, 0x04 },
 { "linux/agpgart.h", "AGPIOC_UNBIND", _IOC_WRITE, 0x4109, 0x04 },
+{ "linux/am437x-vpfe.h", "VIDIOC_AM437X_CCDC_CFG", _IOC_WRITE, 0x56c1, 0x04 },
 { "linux/android/binder.h", "BC_ACQUIRE", _IOC_WRITE, 0x6305, 0x04 },
 { "linux/android/binder.h", "BC_ACQUIRE_DONE", _IOC_WRITE, 0x6309, 0x10 },
 { "linux/android/binder.h", "BC_ACQUIRE_RESULT", _IOC_WRITE, 0x6302, 0x04 },
@@ -672,6 +716,7 @@
 { "linux/dm-ioctl.h", "DM_TABLE_STATUS", _IOC_READ|_IOC_WRITE, 0xfd0c, 0x138 },
 { "linux/dm-ioctl.h", "DM_TARGET_MSG", _IOC_READ|_IOC_WRITE, 0xfd0e, 0x138 },
 { "linux/dm-ioctl.h", "DM_VERSION", _IOC_READ|_IOC_WRITE, 0xfd00, 0x138 },
+{ "linux/dma-buf.h", "DMA_BUF_IOCTL_SYNC", _IOC_WRITE, 0x6200, 0x08 },
 { "linux/dn.h", "OSIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
 { "linux/dn.h", "OSIOCSNETADDR", _IOC_WRITE, 0x89e0, 0x04 },
 { "linux/dn.h", "SIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
@@ -840,6 +885,7 @@
 { "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 },
 { "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x04 },
 { "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x04 },
+{ "linux/fs.h", "BLKDAXGET", _IOC_NONE, 0x1281, 0x00 },
 { "linux/fs.h", "BLKDISCARD", _IOC_NONE, 0x1277, 0x00 },
 { "linux/fs.h", "BLKDISCARDZEROES", _IOC_NONE, 0x127c, 0x00 },
 { "linux/fs.h", "BLKFLSBUF", _IOC_NONE, 0x1261, 0x00 },
@@ -866,6 +912,9 @@
 { "linux/fs.h", "BLKTRACETEARDOWN", _IOC_NONE, 0x1276, 0x00 },
 { "linux/fs.h", "BLKZEROOUT", _IOC_NONE, 0x127f, 0x00 },
 { "linux/fs.h", "FIBMAP", _IOC_NONE, 0x0001, 0x00 },
+{ "linux/fs.h", "FICLONE", _IOC_WRITE, 0x9409, 0x04 },
+{ "linux/fs.h", "FICLONERANGE", _IOC_WRITE, 0x940d, 0x20 },
+{ "linux/fs.h", "FIDEDUPERANGE", _IOC_READ|_IOC_WRITE, 0x9436, 0x18 },
 { "linux/fs.h", "FIFREEZE", _IOC_READ|_IOC_WRITE, 0x5877, 0x04 },
 { "linux/fs.h", "FIGETBSZ", _IOC_NONE, 0x0002, 0x00 },
 { "linux/fs.h", "FITHAW", _IOC_READ|_IOC_WRITE, 0x5878, 0x04 },
@@ -875,10 +924,15 @@
 { "linux/fs.h", "FS_IOC32_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
 { "linux/fs.h", "FS_IOC32_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
 { "linux/fs.h", "FS_IOC_FIEMAP", _IOC_READ|_IOC_WRITE, 0x660b, 0x20 },
+{ "linux/fs.h", "FS_IOC_FSGETXATTR", _IOC_READ, 0x581f, 0x1c },
+{ "linux/fs.h", "FS_IOC_FSSETXATTR", _IOC_WRITE, 0x5820, 0x1c },
 { "linux/fs.h", "FS_IOC_GETFLAGS", _IOC_READ, 0x6601, 0x04 },
 { "linux/fs.h", "FS_IOC_GETVERSION", _IOC_READ, 0x7601, 0x04 },
+{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
+{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
 { "linux/fs.h", "FS_IOC_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
 { "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
+{ "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
 { "linux/fsl-diu-fb.h", "MFB_GET_ALPHA", _IOC_READ, 0x4d00, 0x01 },
 { "linux/fsl-diu-fb.h", "MFB_GET_AOID", _IOC_READ, 0x4d04, 0x08 },
 { "linux/fsl-diu-fb.h", "MFB_GET_GAMMA", _IOC_READ, 0x4d01, 0x01 },
@@ -897,6 +951,7 @@
 { "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_START", _IOC_READ|_IOC_WRITE, 0xaf03, 0x10 },
 { "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_STOP", _IOC_READ|_IOC_WRITE, 0xaf04, 0x08 },
 { "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_SETPROP", _IOC_READ|_IOC_WRITE, 0xaf08, 0x28 },
+{ "linux/fuse.h", "FUSE_DEV_IOC_CLONE", _IOC_READ, 0xe500, 0x04 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_DDCB", _IOC_READ|_IOC_WRITE, 0xa532, 0xe8 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_RAW_DDCB", _IOC_READ|_IOC_WRITE, 0xa533, 0xe8 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_GET_CARD_STATE", _IOC_READ, 0xa524, 0x04 },
@@ -914,6 +969,8 @@
 { "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
+{ "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
+{ "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
 { "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
 { "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
 { "linux/gsmmux.h", "GSMIOC_GETCONF", _IOC_READ, 0x4700, 0x4c },
@@ -982,6 +1039,10 @@
 { "linux/hpet.h", "HPET_IE_ON", _IOC_NONE, 0x6801, 0x00 },
 { "linux/hpet.h", "HPET_INFO", _IOC_READ, 0x6803, 0x0c },
 { "linux/hpet.h", "HPET_IRQFREQ", _IOC_WRITE, 0x6806, 0x04 },
+{ "linux/hsi/cs-protocol.h", "CS_CONFIG_BUFS", _IOC_WRITE, 0x431f, 0x20 },
+{ "linux/hsi/cs-protocol.h", "CS_GET_IF_VERSION", _IOC_READ, 0x431e, 0x04 },
+{ "linux/hsi/cs-protocol.h", "CS_GET_STATE", _IOC_READ, 0x4315, 0x04 },
+{ "linux/hsi/cs-protocol.h", "CS_SET_WAKELINE", _IOC_WRITE, 0x4317, 0x04 },
 { "linux/hsi/hsi_char.h", "HSC_GET_RX", _IOC_WRITE, 0x6b14, 0x0c },
 { "linux/hsi/hsi_char.h", "HSC_GET_TX", _IOC_WRITE, 0x6b16, 0x10 },
 { "linux/hsi/hsi_char.h", "HSC_RESET", _IOC_NONE, 0x6b10, 0x00 },
@@ -1003,10 +1064,6 @@
 { "linux/i2o-dev.h", "I2OSWDL", _IOC_READ|_IOC_WRITE, 0x6905, 0x1c },
 { "linux/i2o-dev.h", "I2OSWUL", _IOC_READ|_IOC_WRITE, 0x6906, 0x1c },
 { "linux/i2o-dev.h", "I2OVALIDATE", _IOC_READ, 0x6908, 0x04 },
-{ "linux/i2o.h", "BLKI2OGRSTRAT", _IOC_READ, 0x3201, 0x04 },
-{ "linux/i2o.h", "BLKI2OGWSTRAT", _IOC_READ, 0x3202, 0x04 },
-{ "linux/i2o.h", "BLKI2OSRSTRAT", _IOC_WRITE, 0x3203, 0x04 },
-{ "linux/i2o.h", "BLKI2OSWSTRAT", _IOC_WRITE, 0x3204, 0x04 },
 { "linux/i8k.h", "I8K_BIOS_VERSION", _IOC_READ, 0x6980, 0x04 },
 { "linux/i8k.h", "I8K_FN_STATUS", _IOC_READ, 0x6983, 0x04 },
 { "linux/i8k.h", "I8K_GET_FAN", _IOC_READ|_IOC_WRITE, 0x6986, 0x04 },
@@ -1023,6 +1080,7 @@
 { "linux/if_tun.h", "TUNGETFILTER", _IOC_READ, 0x54db, 0x08 },
 { "linux/if_tun.h", "TUNGETIFF", _IOC_READ, 0x54d2, 0x04 },
 { "linux/if_tun.h", "TUNGETSNDBUF", _IOC_READ, 0x54d3, 0x04 },
+{ "linux/if_tun.h", "TUNGETVNETBE", _IOC_READ, 0x54df, 0x04 },
 { "linux/if_tun.h", "TUNGETVNETHDRSZ", _IOC_READ, 0x54d7, 0x04 },
 { "linux/if_tun.h", "TUNGETVNETLE", _IOC_READ, 0x54dd, 0x04 },
 { "linux/if_tun.h", "TUNSETDEBUG", _IOC_WRITE, 0x54c9, 0x04 },
@@ -1037,6 +1095,7 @@
 { "linux/if_tun.h", "TUNSETQUEUE", _IOC_WRITE, 0x54d9, 0x04 },
 { "linux/if_tun.h", "TUNSETSNDBUF", _IOC_WRITE, 0x54d4, 0x04 },
 { "linux/if_tun.h", "TUNSETTXFILTER", _IOC_WRITE, 0x54d1, 0x04 },
+{ "linux/if_tun.h", "TUNSETVNETBE", _IOC_WRITE, 0x54de, 0x04 },
 { "linux/if_tun.h", "TUNSETVNETHDRSZ", _IOC_WRITE, 0x54d8, 0x04 },
 { "linux/if_tun.h", "TUNSETVNETLE", _IOC_WRITE, 0x54dc, 0x04 },
 { "linux/iio/events.h", "IIO_GET_EVENT_FD_IOCTL", _IOC_READ, 0x6990, 0x04 },
@@ -1044,6 +1103,7 @@
 { "linux/input.h", "EVIOCGID", _IOC_READ, 0x4502, 0x08 },
 { "linux/input.h", "EVIOCGKEYCODE", _IOC_READ, 0x4504, 0x08 },
 { "linux/input.h", "EVIOCGKEYCODE_V2", _IOC_READ, 0x4504, 0x28 },
+{ "linux/input.h", "EVIOCGMASK", _IOC_READ, 0x4592, 0x10 },
 { "linux/input.h", "EVIOCGRAB", _IOC_WRITE, 0x4590, 0x04 },
 { "linux/input.h", "EVIOCGREP", _IOC_READ, 0x4503, 0x08 },
 { "linux/input.h", "EVIOCGVERSION", _IOC_READ, 0x4501, 0x04 },
@@ -1053,6 +1113,7 @@
 { "linux/input.h", "EVIOCSFF", _IOC_WRITE, 0x4580, 0x2c },
 { "linux/input.h", "EVIOCSKEYCODE", _IOC_WRITE, 0x4504, 0x08 },
 { "linux/input.h", "EVIOCSKEYCODE_V2", _IOC_WRITE, 0x4504, 0x28 },
+{ "linux/input.h", "EVIOCSMASK", _IOC_WRITE, 0x4593, 0x10 },
 { "linux/input.h", "EVIOCSREP", _IOC_WRITE, 0x4503, 0x08 },
 { "linux/ipmi.h", "IPMICTL_GET_MAINTENANCE_MODE_CMD", _IOC_READ, 0x691e, 0x04 },
 { "linux/ipmi.h", "IPMICTL_GET_MY_ADDRESS_CMD", _IOC_READ, 0x6912, 0x04 },
@@ -1167,6 +1228,9 @@
 { "linux/joystick.h", "JSIOCSAXMAP", _IOC_WRITE, 0x6a31, 0x40 },
 { "linux/joystick.h", "JSIOCSBTNMAP", _IOC_WRITE, 0x6a33, 0x400 },
 { "linux/joystick.h", "JSIOCSCORR", _IOC_WRITE, 0x6a21, 0x24 },
+{ "linux/kcov.h", "KCOV_DISABLE", _IOC_NONE, 0x6365, 0x00 },
+{ "linux/kcov.h", "KCOV_ENABLE", _IOC_NONE, 0x6364, 0x00 },
+{ "linux/kcov.h", "KCOV_INIT_TRACE", _IOC_READ, 0x6301, 0x04 },
 { "linux/kd.h", "GIO_CMAP", 0, 0x4B70, 0 },
 { "linux/kd.h", "GIO_FONT", 0, 0x4B60, 0 },
 { "linux/kd.h", "GIO_FONTX", 0, 0x4B6B, 0 },
@@ -1213,13 +1277,22 @@
 { "linux/kd.h", "PIO_UNIMAP", 0, 0x4B67, 0 },
 { "linux/kd.h", "PIO_UNIMAPCLR", 0, 0x4B68, 0 },
 { "linux/kd.h", "PIO_UNISCRNMAP", 0, 0x4B6A, 0 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_EVENT", _IOC_READ|_IOC_WRITE, 0x4b08, 0x20 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b02, 0x58 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_ADDRESS_WATCH", _IOC_WRITE, 0x4b0f, 0x10 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_REGISTER", _IOC_WRITE, 0x4b0d, 0x08 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_UNREGISTER", _IOC_WRITE, 0x4b0e, 0x08 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_WAVE_CONTROL", _IOC_WRITE, 0x4b10, 0x10 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_EVENT", _IOC_WRITE, 0x4b09, 0x08 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
 { "linux/kvm.h", "KVM_ALLOCATE_RMA", _IOC_READ, 0xaea9, 0x08 },
 { "linux/kvm.h", "KVM_ARM_PREFERRED_TARGET", _IOC_READ, 0xaeaf, 0x20 },
 { "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 },
@@ -1235,6 +1308,7 @@
 { "linux/kvm.h", "KVM_CREATE_PIT", _IOC_NONE, 0xae64, 0x00 },
 { "linux/kvm.h", "KVM_CREATE_PIT2", _IOC_WRITE, 0xae77, 0x40 },
 { "linux/kvm.h", "KVM_CREATE_SPAPR_TCE", _IOC_WRITE, 0xaea8, 0x0c },
+{ "linux/kvm.h", "KVM_CREATE_SPAPR_TCE_64", _IOC_WRITE, 0xaea8, 0x20 },
 { "linux/kvm.h", "KVM_CREATE_VCPU", _IOC_NONE, 0xae41, 0x00 },
 { "linux/kvm.h", "KVM_CREATE_VM", _IOC_NONE, 0xae01, 0x00 },
 { "linux/kvm.h", "KVM_DEASSIGN_DEV_IRQ", _IOC_WRITE, 0xae75, 0x40 },
@@ -1284,9 +1358,15 @@
 { "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
 { "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
 { "linux/kvm.h", "KVM_S390_ENABLE_SIE", _IOC_NONE, 0xae06, 0x00 },
+{ "linux/kvm.h", "KVM_S390_GET_IRQ_STATE", _IOC_WRITE, 0xaeb6, 0x20 },
+{ "linux/kvm.h", "KVM_S390_GET_SKEYS", _IOC_WRITE, 0xaeb2, 0x40 },
 { "linux/kvm.h", "KVM_S390_INITIAL_RESET", _IOC_NONE, 0xae97, 0x00 },
 { "linux/kvm.h", "KVM_S390_INTERRUPT", _IOC_WRITE, 0xae94, 0x10 },
+{ "linux/kvm.h", "KVM_S390_IRQ", _IOC_WRITE, 0xaeb4, 0x48 },
+{ "linux/kvm.h", "KVM_S390_MEM_OP", _IOC_WRITE, 0xaeb1, 0x40 },
 { "linux/kvm.h", "KVM_S390_SET_INITIAL_PSW", _IOC_WRITE, 0xae96, 0x10 },
+{ "linux/kvm.h", "KVM_S390_SET_IRQ_STATE", _IOC_WRITE, 0xaeb5, 0x20 },
+{ "linux/kvm.h", "KVM_S390_SET_SKEYS", _IOC_WRITE, 0xaeb3, 0x40 },
 { "linux/kvm.h", "KVM_S390_STORE_STATUS", _IOC_WRITE, 0xae95, 0x04 },
 { "linux/kvm.h", "KVM_S390_UCAS_MAP", _IOC_WRITE, 0xae50, 0x18 },
 { "linux/kvm.h", "KVM_S390_UCAS_UNMAP", _IOC_WRITE, 0xae51, 0x18 },
@@ -1322,6 +1402,7 @@
 { "linux/kvm.h", "KVM_SET_XCRS", _IOC_WRITE, 0xaea7, 0x188 },
 { "linux/kvm.h", "KVM_SET_XSAVE", _IOC_WRITE, 0xaea5, 0x1000 },
 { "linux/kvm.h", "KVM_SIGNAL_MSI", _IOC_WRITE, 0xaea5, 0x20 },
+{ "linux/kvm.h", "KVM_SMI", _IOC_NONE, 0xaeb7, 0x00 },
 { "linux/kvm.h", "KVM_TPR_ACCESS_REPORTING", _IOC_READ|_IOC_WRITE, 0xae92, 0x28 },
 { "linux/kvm.h", "KVM_TRANSLATE", _IOC_READ|_IOC_WRITE, 0xae85, 0x18 },
 { "linux/kvm.h", "KVM_UNREGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae68, 0x10 },
@@ -1329,6 +1410,46 @@
 { "linux/kvm.h", "KVM_X86_SETUP_MCE", _IOC_WRITE, 0xae9c, 0x08 },
 { "linux/kvm.h", "KVM_X86_SET_MCE", _IOC_WRITE, 0xae9e, 0x40 },
 { "linux/kvm.h", "KVM_XEN_HVM_CONFIG", _IOC_WRITE, 0xae7a, 0x38 },
+{ "linux/lightnvm.h", "NVM_DEV_CREATE", _IOC_WRITE, 0x4c22, 0x80 },
+{ "linux/lightnvm.h", "NVM_DEV_FACTORY", _IOC_WRITE, 0x4c25, 0x24 },
+{ "linux/lightnvm.h", "NVM_DEV_INIT", _IOC_WRITE, 0x4c24, 0x2c },
+{ "linux/lightnvm.h", "NVM_DEV_REMOVE", _IOC_WRITE, 0x4c23, 0x24 },
+{ "linux/lightnvm.h", "NVM_GET_DEVICES", _IOC_READ, 0x4c21, 0x1000 },
+{ "linux/lightnvm.h", "NVM_INFO", _IOC_READ|_IOC_WRITE, 0x4c20, 0x1000 },
+{ "linux/lirc.h", "LIRC_GET_FEATURES", _IOC_READ, 0x6900, 0x04 },
+{ "linux/lirc.h", "LIRC_GET_LENGTH", _IOC_READ, 0x690f, 0x04 },
+{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_PULSE", _IOC_READ, 0x690b, 0x04 },
+{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_SPACE", _IOC_READ, 0x690d, 0x04 },
+{ "linux/lirc.h", "LIRC_GET_MAX_TIMEOUT", _IOC_READ, 0x6909, 0x04 },
+{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_PULSE", _IOC_READ, 0x690a, 0x04 },
+{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_SPACE", _IOC_READ, 0x690c, 0x04 },
+{ "linux/lirc.h", "LIRC_GET_MIN_TIMEOUT", _IOC_READ, 0x6908, 0x04 },
+{ "linux/lirc.h", "LIRC_GET_REC_CARRIER", _IOC_READ, 0x6904, 0x04 },
+{ "linux/lirc.h", "LIRC_GET_REC_DUTY_CYCLE", _IOC_READ, 0x6906, 0x04 },
+{ "linux/lirc.h", "LIRC_GET_REC_MODE", _IOC_READ, 0x6902, 0x04 },
+{ "linux/lirc.h", "LIRC_GET_REC_RESOLUTION", _IOC_READ, 0x6907, 0x04 },
+{ "linux/lirc.h", "LIRC_GET_SEND_CARRIER", _IOC_READ, 0x6903, 0x04 },
+{ "linux/lirc.h", "LIRC_GET_SEND_DUTY_CYCLE", _IOC_READ, 0x6905, 0x04 },
+{ "linux/lirc.h", "LIRC_GET_SEND_MODE", _IOC_READ, 0x6901, 0x04 },
+{ "linux/lirc.h", "LIRC_NOTIFY_DECODE", _IOC_NONE, 0x6920, 0x00 },
+{ "linux/lirc.h", "LIRC_SETUP_END", _IOC_NONE, 0x6922, 0x00 },
+{ "linux/lirc.h", "LIRC_SETUP_START", _IOC_NONE, 0x6921, 0x00 },
+{ "linux/lirc.h", "LIRC_SET_MEASURE_CARRIER_MODE", _IOC_WRITE, 0x691d, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_REC_CARRIER", _IOC_WRITE, 0x6914, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_REC_CARRIER_RANGE", _IOC_WRITE, 0x691f, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE", _IOC_WRITE, 0x6916, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE_RANGE", _IOC_WRITE, 0x691e, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_REC_FILTER", _IOC_WRITE, 0x691c, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_REC_FILTER_PULSE", _IOC_WRITE, 0x691a, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_REC_FILTER_SPACE", _IOC_WRITE, 0x691b, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_REC_MODE", _IOC_WRITE, 0x6912, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_REC_TIMEOUT", _IOC_WRITE, 0x6918, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_REC_TIMEOUT_REPORTS", _IOC_WRITE, 0x6919, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_SEND_CARRIER", _IOC_WRITE, 0x6913, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_SEND_DUTY_CYCLE", _IOC_WRITE, 0x6915, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_SEND_MODE", _IOC_WRITE, 0x6911, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_TRANSMITTER_MASK", _IOC_WRITE, 0x6917, 0x04 },
+{ "linux/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
 { "linux/loop.h", "LOOP_CHANGE_FD", 0, 0x4C06, 0 },
 { "linux/loop.h", "LOOP_CLR_FD", 0, 0x4C01, 0 },
 { "linux/loop.h", "LOOP_CTL_ADD", 0, 0x4C80, 0 },
@@ -1337,6 +1458,7 @@
 { "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 },
 { "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 },
 { "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 },
+{ "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 },
 { "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 },
 { "linux/loop.h", "LOOP_SET_STATUS", 0, 0x4C02, 0 },
 { "linux/loop.h", "LOOP_SET_STATUS64", 0, 0x4C04, 0 },
@@ -1358,8 +1480,11 @@
 { "linux/media.h", "MEDIA_IOC_DEVICE_INFO", _IOC_READ|_IOC_WRITE, 0x7c00, 0x100 },
 { "linux/media.h", "MEDIA_IOC_ENUM_ENTITIES", _IOC_READ|_IOC_WRITE, 0x7c01, 0x100 },
 { "linux/media.h", "MEDIA_IOC_ENUM_LINKS", _IOC_READ|_IOC_WRITE, 0x7c02, 0x1c },
+{ "linux/media.h", "MEDIA_IOC_G_TOPOLOGY", _IOC_READ|_IOC_WRITE, 0x7c04, 0x48 },
 { "linux/media.h", "MEDIA_IOC_SETUP_LINK", _IOC_READ|_IOC_WRITE, 0x7c03, 0x34 },
 { "linux/mei.h", "IOCTL_MEI_CONNECT_CLIENT", _IOC_READ|_IOC_WRITE, 0x4801, 0x10 },
+{ "linux/mei.h", "IOCTL_MEI_NOTIFY_GET", _IOC_READ, 0x4803, 0x04 },
+{ "linux/mei.h", "IOCTL_MEI_NOTIFY_SET", _IOC_WRITE, 0x4802, 0x04 },
 { "linux/meye.h", "MEYEIOC_G_PARAMS", _IOC_READ, 0x76c0, 0x06 },
 { "linux/meye.h", "MEYEIOC_QBUF_CAPT", _IOC_WRITE, 0x76c2, 0x04 },
 { "linux/meye.h", "MEYEIOC_STILLCAPT", _IOC_NONE, 0x76c4, 0x00 },
@@ -1370,6 +1495,7 @@
 { "linux/mic_ioctl.h", "MIC_VIRTIO_CONFIG_CHANGE", _IOC_READ|_IOC_WRITE, 0x7305, 0x04 },
 { "linux/mic_ioctl.h", "MIC_VIRTIO_COPY_DESC", _IOC_READ|_IOC_WRITE, 0x7302, 0x04 },
 { "linux/mmc/ioctl.h", "MMC_IOC_CMD", _IOC_READ|_IOC_WRITE, 0xb300, 0x48 },
+{ "linux/mmc/ioctl.h", "MMC_IOC_MULTI_CMD", _IOC_READ|_IOC_WRITE, 0xb301, 0x08 },
 { "linux/mmtimer.h", "MMTIMER_GETBITS", _IOC_NONE, 0x6d04, 0x00 },
 { "linux/mmtimer.h", "MMTIMER_GETCOUNTER", _IOC_READ, 0x6d09, 0x04 },
 { "linux/mmtimer.h", "MMTIMER_GETFREQ", _IOC_READ, 0x6d02, 0x04 },
@@ -1381,8 +1507,6 @@
 { "linux/msdos_fs.h", "FAT_IOCTL_SET_ATTRIBUTES", _IOC_WRITE, 0x7211, 0x04 },
 { "linux/msdos_fs.h", "VFAT_IOCTL_READDIR_BOTH", _IOC_READ, 0x7201, 0x230 },
 { "linux/msdos_fs.h", "VFAT_IOCTL_READDIR_SHORT", _IOC_READ, 0x7202, 0x230 },
-{ "linux/msm_mdp.h", "MSMFB_BLIT", _IOC_WRITE, 0x6d02, 0x04 },
-{ "linux/msm_mdp.h", "MSMFB_GRP_DISP", _IOC_WRITE, 0x6d01, 0x04 },
 { "linux/mtio.h", "MTIOCGET", _IOC_READ, 0x6d02, 0x1c },
 { "linux/mtio.h", "MTIOCPOS", _IOC_READ, 0x6d03, 0x04 },
 { "linux/mtio.h", "MTIOCTOP", _IOC_WRITE, 0x6d01, 0x08 },
@@ -1417,6 +1541,17 @@
 { "linux/ncp_fs.h", "NCP_IOC_SET_SIGN_WANTED", _IOC_WRITE, 0x6e06, 0x04 },
 { "linux/ncp_fs.h", "NCP_IOC_SIGN_INIT", _IOC_READ, 0x6e05, 0x18 },
 { "linux/ncp_fs.h", "NCP_IOC_SIGN_WANTED", _IOC_READ, 0x6e06, 0x04 },
+{ "linux/ndctl.h", "ND_IOCTL_ARS_CAP", _IOC_READ|_IOC_WRITE, 0x4e01, 0x20 },
+{ "linux/ndctl.h", "ND_IOCTL_ARS_START", _IOC_READ|_IOC_WRITE, 0x4e02, 0x20 },
+{ "linux/ndctl.h", "ND_IOCTL_ARS_STATUS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x30 },
+{ "linux/ndctl.h", "ND_IOCTL_CLEAR_ERROR", _IOC_READ|_IOC_WRITE, 0x4e04, 0x20 },
+{ "linux/ndctl.h", "ND_IOCTL_DIMM_FLAGS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x08 },
+{ "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_DATA", _IOC_READ|_IOC_WRITE, 0x4e05, 0x0c },
+{ "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_SIZE", _IOC_READ|_IOC_WRITE, 0x4e04, 0x0c },
+{ "linux/ndctl.h", "ND_IOCTL_SET_CONFIG_DATA", _IOC_READ|_IOC_WRITE, 0x4e06, 0x08 },
+{ "linux/ndctl.h", "ND_IOCTL_SMART", _IOC_READ|_IOC_WRITE, 0x4e01, 0x84 },
+{ "linux/ndctl.h", "ND_IOCTL_SMART_THRESHOLD", _IOC_READ|_IOC_WRITE, 0x4e02, 0x0c },
+{ "linux/ndctl.h", "ND_IOCTL_VENDOR", _IOC_READ|_IOC_WRITE, 0x4e09, 0x08 },
 { "linux/nilfs2_fs.h", "NILFS_IOCTL_CHANGE_CPMODE", _IOC_WRITE, 0x6e80, 0x10 },
 { "linux/nilfs2_fs.h", "NILFS_IOCTL_CLEAN_SEGMENTS", _IOC_WRITE, 0x6e88, 0x78 },
 { "linux/nilfs2_fs.h", "NILFS_IOCTL_DELETE_CHECKPOINT", _IOC_WRITE, 0x6e81, 0x08 },
@@ -1430,10 +1565,12 @@
 { "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
 { "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
 { "linux/nilfs2_fs.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
-{ "linux/nvme.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
-{ "linux/nvme.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
-{ "linux/nvme.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
-{ "linux/nvme.h", "NVME_IOCTL_SUBMIT_IO", _IOC_WRITE, 0x4e42, 0x30 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_RESET", _IOC_NONE, 0x4e44, 0x00 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_SUBMIT_IO", _IOC_WRITE, 0x4e42, 0x30 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_SUBSYS_RESET", _IOC_NONE, 0x4e45, 0x00 },
 { "linux/nvram.h", "NVRAM_INIT", _IOC_NONE, 0x7040, 0x00 },
 { "linux/nvram.h", "NVRAM_SETCKS", _IOC_NONE, 0x7041, 0x00 },
 { "linux/omap3isp.h", "VIDIOC_OMAP3ISP_AEWB_CFG", _IOC_READ|_IOC_WRITE, 0x56c3, 0x20 },
@@ -1472,6 +1609,7 @@
 { "linux/perf_event.h", "PERF_EVENT_IOC_PERIOD", _IOC_WRITE, 0x2404, 0x08 },
 { "linux/perf_event.h", "PERF_EVENT_IOC_REFRESH", _IOC_NONE, 0x2402, 0x00 },
 { "linux/perf_event.h", "PERF_EVENT_IOC_RESET", _IOC_NONE, 0x2403, 0x00 },
+{ "linux/perf_event.h", "PERF_EVENT_IOC_SET_BPF", _IOC_WRITE, 0x2408, 0x04 },
 { "linux/perf_event.h", "PERF_EVENT_IOC_SET_FILTER", _IOC_WRITE, 0x2406, 0x04 },
 { "linux/perf_event.h", "PERF_EVENT_IOC_SET_OUTPUT", _IOC_NONE, 0x2405, 0x00 },
 { "linux/phantom.h", "PHN_GETREG", _IOC_READ|_IOC_WRITE, 0x7005, 0x08 },
@@ -1484,6 +1622,7 @@
 { "linux/phantom.h", "PHN_SET_REG", _IOC_WRITE, 0x7001, 0x04 },
 { "linux/phantom.h", "PHN_SET_REGS", _IOC_WRITE, 0x7003, 0x04 },
 { "linux/pktcdvd.h", "PACKET_CTRL_CMD", _IOC_READ|_IOC_WRITE, 0x5801, 0x18 },
+{ "linux/platform_data/media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
 { "linux/pmu.h", "PMU_IOC_CAN_SLEEP", _IOC_READ, 0x4205, 0x04 },
 { "linux/pmu.h", "PMU_IOC_GET_BACKLIGHT", _IOC_READ, 0x4201, 0x04 },
 { "linux/pmu.h", "PMU_IOC_GET_MODEL", _IOC_READ, 0x4203, 0x04 },
@@ -1549,6 +1688,12 @@
 { "linux/pps.h", "PPS_GETPARAMS", _IOC_READ, 0x70a1, 0x04 },
 { "linux/pps.h", "PPS_KC_BIND", _IOC_WRITE, 0x70a5, 0x04 },
 { "linux/pps.h", "PPS_SETPARAMS", _IOC_WRITE, 0x70a2, 0x04 },
+{ "linux/pr.h", "IOC_PR_CLEAR", _IOC_WRITE, 0x70cd, 0x10 },
+{ "linux/pr.h", "IOC_PR_PREEMPT", _IOC_WRITE, 0x70cb, 0x18 },
+{ "linux/pr.h", "IOC_PR_PREEMPT_ABORT", _IOC_WRITE, 0x70cc, 0x18 },
+{ "linux/pr.h", "IOC_PR_REGISTER", _IOC_WRITE, 0x70c8, 0x18 },
+{ "linux/pr.h", "IOC_PR_RELEASE", _IOC_WRITE, 0x70ca, 0x10 },
+{ "linux/pr.h", "IOC_PR_RESERVE", _IOC_WRITE, 0x70c9, 0x10 },
 { "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS", _IOC_READ, 0x3d01, 0x50 },
 { "linux/ptp_clock.h", "PTP_ENABLE_PPS", _IOC_WRITE, 0x3d04, 0x04 },
 { "linux/ptp_clock.h", "PTP_EXTTS_REQUEST", _IOC_WRITE, 0x3d02, 0x10 },
@@ -1556,10 +1701,12 @@
 { "linux/ptp_clock.h", "PTP_PIN_GETFUNC", _IOC_READ|_IOC_WRITE, 0x3d06, 0x60 },
 { "linux/ptp_clock.h", "PTP_PIN_SETFUNC", _IOC_WRITE, 0x3d07, 0x60 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET", _IOC_WRITE, 0x3d05, 0x340 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE", _IOC_READ|_IOC_WRITE, 0x3d08, 0x40 },
 { "linux/radeonfb.h", "FBIO_RADEON_GET_MIRROR", _IOC_READ, 0x4003, 0x04 },
 { "linux/radeonfb.h", "FBIO_RADEON_SET_MIRROR", _IOC_WRITE, 0x4004, 0x04 },
 { "linux/raid/md_u.h", "ADD_NEW_DISK", _IOC_WRITE, 0x0921, 0x14 },
 { "linux/raid/md_u.h", "CLEAR_ARRAY", _IOC_NONE, 0x0920, 0x00 },
+{ "linux/raid/md_u.h", "CLUSTERED_DISK_NACK", _IOC_NONE, 0x0935, 0x00 },
 { "linux/raid/md_u.h", "GET_ARRAY_INFO", _IOC_READ, 0x0911, 0x48 },
 { "linux/raid/md_u.h", "GET_BITMAP_FILE", _IOC_READ, 0x0915, 0x1000 },
 { "linux/raid/md_u.h", "GET_DISK_INFO", _IOC_READ, 0x0912, 0x14 },
@@ -1589,6 +1736,30 @@
 { "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
 { "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x04 },
 { "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
+{ "linux/rio_mport_cdev.h", "RIO_ALLOC_DMA", _IOC_READ|_IOC_WRITE, 0x6d13, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_DEV_ADD", _IOC_WRITE, 0x6d17, 0x20 },
+{ "linux/rio_mport_cdev.h", "RIO_DEV_DEL", _IOC_WRITE, 0x6d18, 0x20 },
+{ "linux/rio_mport_cdev.h", "RIO_DISABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d0a, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_DISABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0c, 0x10 },
+{ "linux/rio_mport_cdev.h", "RIO_ENABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d09, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_ENABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0b, 0x10 },
+{ "linux/rio_mport_cdev.h", "RIO_FREE_DMA", _IOC_WRITE, 0x6d14, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_GET_EVENT_MASK", _IOC_READ, 0x6d0e, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_MAP_INBOUND", _IOC_READ|_IOC_WRITE, 0x6d11, 0x28 },
+{ "linux/rio_mport_cdev.h", "RIO_MAP_OUTBOUND", _IOC_READ|_IOC_WRITE, 0x6d0f, 0x28 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_GET_PROPERTIES", _IOC_READ, 0x6d04, 0x30 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_COMPTAG_SET", _IOC_WRITE, 0x6d02, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_HDID_SET", _IOC_WRITE, 0x6d01, 0x02 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_PORT_IDX_GET", _IOC_READ, 0x6d03, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_LOCAL", _IOC_READ, 0x6d05, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_REMOTE", _IOC_READ, 0x6d07, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_LOCAL", _IOC_WRITE, 0x6d06, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_REMOTE", _IOC_WRITE, 0x6d08, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_SET_EVENT_MASK", _IOC_WRITE, 0x6d0d, 0x04 },
+{ "linux/rio_mport_cdev.h", "RIO_TRANSFER", _IOC_READ|_IOC_WRITE, 0x6d15, 0x18 },
+{ "linux/rio_mport_cdev.h", "RIO_UNMAP_INBOUND", _IOC_WRITE, 0x6d12, 0x08 },
+{ "linux/rio_mport_cdev.h", "RIO_UNMAP_OUTBOUND", _IOC_WRITE, 0x6d10, 0x28 },
+{ "linux/rio_mport_cdev.h", "RIO_WAIT_FOR_ASYNC", _IOC_WRITE, 0x6d16, 0x08 },
 { "linux/rtc.h", "RTC_AIE_OFF", _IOC_NONE, 0x7002, 0x00 },
 { "linux/rtc.h", "RTC_AIE_ON", _IOC_NONE, 0x7001, 0x00 },
 { "linux/rtc.h", "RTC_ALM_READ", _IOC_READ, 0x7008, 0x24 },
@@ -1611,6 +1782,23 @@
 { "linux/rtc.h", "RTC_WIE_ON", _IOC_NONE, 0x700f, 0x00 },
 { "linux/rtc.h", "RTC_WKALM_RD", _IOC_READ, 0x7010, 0x28 },
 { "linux/rtc.h", "RTC_WKALM_SET", _IOC_WRITE, 0x700f, 0x28 },
+{ "linux/scif_ioctl.h", "SCIF_ACCEPTREG", _IOC_READ|_IOC_WRITE, 0x7305, 0x08 },
+{ "linux/scif_ioctl.h", "SCIF_ACCEPTREQ", _IOC_READ|_IOC_WRITE, 0x7304, 0x10 },
+{ "linux/scif_ioctl.h", "SCIF_BIND", _IOC_READ|_IOC_WRITE, 0x7301, 0x08 },
+{ "linux/scif_ioctl.h", "SCIF_CONNECT", _IOC_READ|_IOC_WRITE, 0x7303, 0x08 },
+{ "linux/scif_ioctl.h", "SCIF_FENCE_MARK", _IOC_READ|_IOC_WRITE, 0x730f, 0x10 },
+{ "linux/scif_ioctl.h", "SCIF_FENCE_SIGNAL", _IOC_READ|_IOC_WRITE, 0x7311, 0x28 },
+{ "linux/scif_ioctl.h", "SCIF_FENCE_WAIT", _IOC_READ|_IOC_WRITE, 0x7310, 0x04 },
+{ "linux/scif_ioctl.h", "SCIF_GET_NODEIDS", _IOC_READ|_IOC_WRITE, 0x730e, 0x18 },
+{ "linux/scif_ioctl.h", "SCIF_LISTEN", _IOC_WRITE, 0x7302, 0x04 },
+{ "linux/scif_ioctl.h", "SCIF_READFROM", _IOC_READ|_IOC_WRITE, 0x730a, 0x28 },
+{ "linux/scif_ioctl.h", "SCIF_RECV", _IOC_READ|_IOC_WRITE, 0x7307, 0x18 },
+{ "linux/scif_ioctl.h", "SCIF_REG", _IOC_READ|_IOC_WRITE, 0x7308, 0x28 },
+{ "linux/scif_ioctl.h", "SCIF_SEND", _IOC_READ|_IOC_WRITE, 0x7306, 0x18 },
+{ "linux/scif_ioctl.h", "SCIF_UNREG", _IOC_READ|_IOC_WRITE, 0x7309, 0x10 },
+{ "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x28 },
+{ "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x28 },
+{ "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x28 },
 { "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x04 },
 { "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
 { "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
@@ -1805,6 +1993,9 @@
 { "linux/spi/spidev.h", "SPI_IOC_WR_MAX_SPEED_HZ", _IOC_WRITE, 0x6b04, 0x04 },
 { "linux/spi/spidev.h", "SPI_IOC_WR_MODE", _IOC_WRITE, 0x6b01, 0x01 },
 { "linux/spi/spidev.h", "SPI_IOC_WR_MODE32", _IOC_WRITE, 0x6b05, 0x04 },
+{ "linux/stm.h", "STP_POLICY_ID_GET", _IOC_READ, 0x2501, 0x10 },
+{ "linux/stm.h", "STP_POLICY_ID_SET", _IOC_READ|_IOC_WRITE, 0x2500, 0x10 },
+{ "linux/stm.h", "STP_SET_OPTIONS", _IOC_WRITE, 0x2502, 0x08 },
 { "linux/suspend_ioctls.h", "SNAPSHOT_ALLOC_SWAP_PAGE", _IOC_READ, 0x3314, 0x08 },
 { "linux/suspend_ioctls.h", "SNAPSHOT_ATOMIC_RESTORE", _IOC_NONE, 0x3304, 0x00 },
 { "linux/suspend_ioctls.h", "SNAPSHOT_AVAIL_SWAP_SIZE", _IOC_READ, 0x3313, 0x08 },
@@ -1887,15 +2078,18 @@
 { "linux/telephony.h", "PHONE_WINK", _IOC_WRITE, 0x71aa, 0x04 },
 { "linux/telephony.h", "PHONE_WINK_DURATION", _IOC_WRITE, 0x71a6, 0x04 },
 { "linux/timerfd.h", "TFD_IOC_SET_TICKS", _IOC_WRITE, 0x5400, 0x08 },
-{ "linux/toshiba.h", "TOSH_SMM", _IOC_READ|_IOC_WRITE, 0x7490, 0x04 },
+{ "linux/toshiba.h", "TOSHIBA_ACPI_SCI", _IOC_READ|_IOC_WRITE, 0x7491, 0x18 },
+{ "linux/toshiba.h", "TOSH_SMM", _IOC_READ|_IOC_WRITE, 0x7490, 0x18 },
 { "linux/udf_fs_i.h", "UDF_GETEABLOCK", _IOC_READ, 0x6c41, 0x04 },
 { "linux/udf_fs_i.h", "UDF_GETEASIZE", _IOC_READ, 0x6c40, 0x04 },
 { "linux/udf_fs_i.h", "UDF_GETVOLIDENT", _IOC_READ, 0x6c42, 0x04 },
 { "linux/udf_fs_i.h", "UDF_RELOCATE_BLOCKS", _IOC_READ|_IOC_WRITE, 0x6c43, 0x04 },
+{ "linux/uinput.h", "UI_ABS_SETUP", _IOC_WRITE, 0x5504, 0x1c },
 { "linux/uinput.h", "UI_BEGIN_FF_ERASE", _IOC_READ|_IOC_WRITE, 0x55ca, 0x0c },
 { "linux/uinput.h", "UI_BEGIN_FF_UPLOAD", _IOC_READ|_IOC_WRITE, 0x55c8, 0x60 },
 { "linux/uinput.h", "UI_DEV_CREATE", _IOC_NONE, 0x5501, 0x00 },
 { "linux/uinput.h", "UI_DEV_DESTROY", _IOC_NONE, 0x5502, 0x00 },
+{ "linux/uinput.h", "UI_DEV_SETUP", _IOC_WRITE, 0x5503, 0x5c },
 { "linux/uinput.h", "UI_END_FF_ERASE", _IOC_WRITE, 0x55cb, 0x0c },
 { "linux/uinput.h", "UI_END_FF_UPLOAD", _IOC_WRITE, 0x55c9, 0x60 },
 { "linux/uinput.h", "UI_GET_VERSION", _IOC_READ, 0x552d, 0x04 },
@@ -1925,6 +2119,11 @@
 { "linux/usb/iowarrior.h", "IOW_GETINFO", _IOC_READ, 0xc003, 0x28 },
 { "linux/usb/iowarrior.h", "IOW_READ", _IOC_WRITE, 0xc002, 0x04 },
 { "linux/usb/iowarrior.h", "IOW_WRITE", _IOC_WRITE, 0xc001, 0x04 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GET_CAPS", _IOC_READ, 0x5b11, 0x01 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GOTO_LOCAL", _IOC_NONE, 0x5b14, 0x00 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_READ_STB", _IOC_READ, 0x5b12, 0x01 },
+{ "linux/usb/tmc.h", "USBTMC488_IOCTL_REN_CONTROL", _IOC_WRITE, 0x5b13, 0x01 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_IN", _IOC_NONE, 0x5b04, 0x00 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_OUT", _IOC_NONE, 0x5b03, 0x00 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR", _IOC_NONE, 0x5b02, 0x00 },
@@ -1946,6 +2145,7 @@
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCONNECT_CLAIM", _IOC_READ, 0x551b, 0x108 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL", _IOC_READ, 0x550e, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL32", _IOC_READ, 0x550e, 0x08 },
+{ "linux/usbdevice_fs.h", "USBDEVFS_DROP_PRIVILEGES", _IOC_WRITE, 0x551e, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_FREE_STREAMS", _IOC_READ, 0x551d, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GETDRIVER", _IOC_WRITE, 0x5508, 0x104 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GET_CAPABILITIES", _IOC_READ, 0x551a, 0x04 },
@@ -1964,6 +2164,12 @@
 { "linux/usbdevice_fs.h", "USBDEVFS_SETINTERFACE", _IOC_READ, 0x5504, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB", _IOC_READ, 0x550a, 0x2c },
 { "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB32", _IOC_READ, 0x550a, 0x2a },
+{ "linux/userfaultfd.h", "UFFDIO_API", _IOC_READ|_IOC_WRITE, 0xaa3f, 0x18 },
+{ "linux/userfaultfd.h", "UFFDIO_COPY", _IOC_READ|_IOC_WRITE, 0xaa03, 0x28 },
+{ "linux/userfaultfd.h", "UFFDIO_REGISTER", _IOC_READ|_IOC_WRITE, 0xaa00, 0x20 },
+{ "linux/userfaultfd.h", "UFFDIO_UNREGISTER", _IOC_READ, 0xaa01, 0x10 },
+{ "linux/userfaultfd.h", "UFFDIO_WAKE", _IOC_READ, 0xaa02, 0x10 },
+{ "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 },
 { "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x58 },
 { "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x0c },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_DV_TIMINGS_CAP", _IOC_READ|_IOC_WRITE, 0x5664, 0x90 },
@@ -2002,11 +2208,17 @@
 { "linux/vfio.h", "VFIO_IOMMU_ENABLE", _IOC_NONE, 0x3b73, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_MAP_DMA", _IOC_NONE, 0x3b71, 0x00 },
+{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_REGISTER_MEMORY", _IOC_NONE, 0x3b75, 0x00 },
+{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_CREATE", _IOC_NONE, 0x3b77, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
+{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_REMOVE", _IOC_NONE, 0x3b78, 0x00 },
+{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY", _IOC_NONE, 0x3b76, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_UNMAP_DMA", _IOC_NONE, 0x3b72, 0x00 },
 { "linux/vfio.h", "VFIO_SET_IOMMU", _IOC_NONE, 0x3b66, 0x00 },
 { "linux/vhost.h", "VHOST_GET_FEATURES", _IOC_READ, 0xaf00, 0x08 },
 { "linux/vhost.h", "VHOST_GET_VRING_BASE", _IOC_READ|_IOC_WRITE, 0xaf12, 0x08 },
+{ "linux/vhost.h", "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf24, 0x08 },
+{ "linux/vhost.h", "VHOST_GET_VRING_ENDIAN", _IOC_WRITE, 0xaf14, 0x08 },
 { "linux/vhost.h", "VHOST_NET_SET_BACKEND", _IOC_WRITE, 0xaf30, 0x08 },
 { "linux/vhost.h", "VHOST_RESET_OWNER", _IOC_NONE, 0xaf02, 0x00 },
 { "linux/vhost.h", "VHOST_SCSI_CLEAR_ENDPOINT", _IOC_WRITE, 0xaf41, 0xe8 },
@@ -2021,7 +2233,9 @@
 { "linux/vhost.h", "VHOST_SET_OWNER", _IOC_NONE, 0xaf01, 0x00 },
 { "linux/vhost.h", "VHOST_SET_VRING_ADDR", _IOC_WRITE, 0xaf11, 0x28 },
 { "linux/vhost.h", "VHOST_SET_VRING_BASE", _IOC_WRITE, 0xaf12, 0x08 },
+{ "linux/vhost.h", "VHOST_SET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf23, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_CALL", _IOC_WRITE, 0xaf21, 0x08 },
+{ "linux/vhost.h", "VHOST_SET_VRING_ENDIAN", _IOC_WRITE, 0xaf13, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_KICK", _IOC_WRITE, 0xaf20, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_NUM", _IOC_WRITE, 0xaf10, 0x08 },
@@ -2211,55 +2425,24 @@
 { "linux/wireless.h", "SIOCSIWSTATS", 0, 0x8B0E, 0 },
 { "linux/wireless.h", "SIOCSIWTHRSPY", 0, 0x8B12, 0 },
 { "linux/wireless.h", "SIOCSIWTXPOW", 0, 0x8B26, 0 },
-{ "media/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
-{ "media/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
-{ "media/bt819.h", "BT819_FIFO_RESET_LOW", _IOC_NONE, 0x6200, 0x00 },
 { "media/davinci/vpfe_capture.h", "VPFE_CMD_S_CCDC_RAW_PARAMS", _IOC_WRITE, 0x56c1, 0x04 },
-{ "media/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
-{ "media/lirc.h", "LIRC_GET_FEATURES", _IOC_READ, 0x6900, 0x04 },
-{ "media/lirc.h", "LIRC_GET_LENGTH", _IOC_READ, 0x690f, 0x04 },
-{ "media/lirc.h", "LIRC_GET_MAX_FILTER_PULSE", _IOC_READ, 0x690b, 0x04 },
-{ "media/lirc.h", "LIRC_GET_MAX_FILTER_SPACE", _IOC_READ, 0x690d, 0x04 },
-{ "media/lirc.h", "LIRC_GET_MAX_TIMEOUT", _IOC_READ, 0x6909, 0x04 },
-{ "media/lirc.h", "LIRC_GET_MIN_FILTER_PULSE", _IOC_READ, 0x690a, 0x04 },
-{ "media/lirc.h", "LIRC_GET_MIN_FILTER_SPACE", _IOC_READ, 0x690c, 0x04 },
-{ "media/lirc.h", "LIRC_GET_MIN_TIMEOUT", _IOC_READ, 0x6908, 0x04 },
-{ "media/lirc.h", "LIRC_GET_REC_CARRIER", _IOC_READ, 0x6904, 0x04 },
-{ "media/lirc.h", "LIRC_GET_REC_DUTY_CYCLE", _IOC_READ, 0x6906, 0x04 },
-{ "media/lirc.h", "LIRC_GET_REC_MODE", _IOC_READ, 0x6902, 0x04 },
-{ "media/lirc.h", "LIRC_GET_REC_RESOLUTION", _IOC_READ, 0x6907, 0x04 },
-{ "media/lirc.h", "LIRC_GET_SEND_CARRIER", _IOC_READ, 0x6903, 0x04 },
-{ "media/lirc.h", "LIRC_GET_SEND_DUTY_CYCLE", _IOC_READ, 0x6905, 0x04 },
-{ "media/lirc.h", "LIRC_GET_SEND_MODE", _IOC_READ, 0x6901, 0x04 },
-{ "media/lirc.h", "LIRC_NOTIFY_DECODE", _IOC_NONE, 0x6920, 0x00 },
-{ "media/lirc.h", "LIRC_SETUP_END", _IOC_NONE, 0x6922, 0x00 },
-{ "media/lirc.h", "LIRC_SETUP_START", _IOC_NONE, 0x6921, 0x00 },
-{ "media/lirc.h", "LIRC_SET_MEASURE_CARRIER_MODE", _IOC_WRITE, 0x691d, 0x04 },
-{ "media/lirc.h", "LIRC_SET_REC_CARRIER", _IOC_WRITE, 0x6914, 0x04 },
-{ "media/lirc.h", "LIRC_SET_REC_CARRIER_RANGE", _IOC_WRITE, 0x691f, 0x04 },
-{ "media/lirc.h", "LIRC_SET_REC_DUTY_CYCLE", _IOC_WRITE, 0x6916, 0x04 },
-{ "media/lirc.h", "LIRC_SET_REC_DUTY_CYCLE_RANGE", _IOC_WRITE, 0x691e, 0x04 },
-{ "media/lirc.h", "LIRC_SET_REC_FILTER", _IOC_WRITE, 0x691c, 0x04 },
-{ "media/lirc.h", "LIRC_SET_REC_FILTER_PULSE", _IOC_WRITE, 0x691a, 0x04 },
-{ "media/lirc.h", "LIRC_SET_REC_FILTER_SPACE", _IOC_WRITE, 0x691b, 0x04 },
-{ "media/lirc.h", "LIRC_SET_REC_MODE", _IOC_WRITE, 0x6912, 0x04 },
-{ "media/lirc.h", "LIRC_SET_REC_TIMEOUT", _IOC_WRITE, 0x6918, 0x04 },
-{ "media/lirc.h", "LIRC_SET_REC_TIMEOUT_REPORTS", _IOC_WRITE, 0x6919, 0x04 },
-{ "media/lirc.h", "LIRC_SET_SEND_CARRIER", _IOC_WRITE, 0x6913, 0x04 },
-{ "media/lirc.h", "LIRC_SET_SEND_DUTY_CYCLE", _IOC_WRITE, 0x6915, 0x04 },
-{ "media/lirc.h", "LIRC_SET_SEND_MODE", _IOC_WRITE, 0x6911, 0x04 },
-{ "media/lirc.h", "LIRC_SET_TRANSMITTER_MASK", _IOC_WRITE, 0x6917, 0x04 },
-{ "media/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
-{ "media/saa6588.h", "SAA6588_CMD_CLOSE", _IOC_WRITE, 0x5202, 0x04 },
-{ "media/saa6588.h", "SAA6588_CMD_POLL", _IOC_READ, 0x5204, 0x04 },
-{ "media/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
-{ "media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
+{ "media/drv-intf/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
+{ "media/i2c/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
+{ "media/i2c/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
+{ "media/i2c/bt819.h", "BT819_FIFO_RESET_LOW", _IOC_NONE, 0x6200, 0x00 },
+{ "media/i2c/saa6588.h", "SAA6588_CMD_CLOSE", _IOC_WRITE, 0x5202, 0x04 },
+{ "media/i2c/saa6588.h", "SAA6588_CMD_POLL", _IOC_READ, 0x5204, 0x04 },
+{ "media/i2c/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
 { "media/v4l2-common.h", "TUNER_SET_CONFIG", _IOC_WRITE, 0x645c, 0x08 },
 { "media/v4l2-common.h", "VIDIOC_INT_RESET", _IOC_WRITE, 0x6466, 0x04 },
+{ "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x88 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_RX_NOTIFY", _IOC_WRITE, 0x7600, 0x04 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_TX_NOTIFY", _IOC_WRITE, 0x7601, 0x04 },
+{ "misc/cxl.h", "CXL_IOCTL_DOWNLOAD_IMAGE", _IOC_WRITE, 0xca0a, 0x40 },
+{ "misc/cxl.h", "CXL_IOCTL_GET_AFU_ID", _IOC_READ, 0xca02, 0x40 },
 { "misc/cxl.h", "CXL_IOCTL_GET_PROCESS_ELEMENT", _IOC_READ, 0xca01, 0x04 },
 { "misc/cxl.h", "CXL_IOCTL_START_WORK", _IOC_WRITE, 0xca00, 0x40 },
+{ "misc/cxl.h", "CXL_IOCTL_VALIDATE_IMAGE", _IOC_WRITE, 0xca0b, 0x40 },
 { "mtd/mtd-abi.h", "ECCGETLAYOUT", _IOC_READ, 0x4d11, 0x148 },
 { "mtd/mtd-abi.h", "ECCGETSTATS", _IOC_READ, 0x4d12, 0x10 },
 { "mtd/mtd-abi.h", "MEMERASE", _IOC_WRITE, 0x4d02, 0x08 },
@@ -2324,10 +2507,21 @@
 { "net/bluetooth/rfcomm.h", "RFCOMMGETDEVLIST", _IOC_READ, 0x52d2, 0x04 },
 { "net/bluetooth/rfcomm.h", "RFCOMMRELEASEDEV", _IOC_WRITE, 0x52c9, 0x04 },
 { "net/bluetooth/rfcomm.h", "RFCOMMSTEALDLC", _IOC_WRITE, 0x52dc, 0x04 },
+{ "net/nfc/nci_core.h", "NCIUARTSETDRIVER", _IOC_WRITE, 0x5500, 0x04 },
 { "rdma/ib_user_mad.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
 { "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
 { "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
 { "rdma/ib_user_mad.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
+{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
+{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
+{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
+{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_RECOVER_AFU", _IOC_READ|_IOC_WRITE, 0xca85, 0x78 },
+{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_RELEASE", _IOC_READ|_IOC_WRITE, 0xca82, 0x68 },
+{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_USER_DIRECT", _IOC_READ|_IOC_WRITE, 0xca81, 0x70 },
+{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_USER_VIRTUAL", _IOC_READ|_IOC_WRITE, 0xca87, 0x78 },
+{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VERIFY", _IOC_READ|_IOC_WRITE, 0xca84, 0x90 },
+{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VLUN_CLONE", _IOC_READ|_IOC_WRITE, 0xca89, 0x70 },
+{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VLUN_RESIZE", _IOC_READ|_IOC_WRITE, 0xca88, 0x78 },
 { "scsi/scsi.h", "SCSI_IOCTL_GET_BUS_NUMBER", 0, 0x5386, 0 },
 { "scsi/scsi.h", "SCSI_IOCTL_GET_IDLUN", 0, 0x5382, 0 },
 { "scsi/scsi.h", "SCSI_IOCTL_GET_PCI", 0, 0x5387, 0 },
@@ -2370,7 +2564,6 @@
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_PORT_INFO", _IOC_READ|_IOC_WRITE, 0x5322, 0xa4 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", _IOC_READ|_IOC_WRITE, 0x5349, 0x4c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5334, 0x8c },
-{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER", _IOC_READ|_IOC_WRITE, 0x5343, 0x00 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS", _IOC_READ|_IOC_WRITE, 0x5340, 0x5c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO", _IOC_READ|_IOC_WRITE, 0x5341, 0x2c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER", _IOC_READ|_IOC_WRITE, 0x5345, 0x60 },
@@ -2386,7 +2579,6 @@
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_PORT_INFO", _IOC_WRITE, 0x5323, 0xa4 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", _IOC_WRITE, 0x534a, 0x4c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5335, 0x8c },
-{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER", _IOC_WRITE, 0x5344, 0x00 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", _IOC_WRITE, 0x5342, 0x2c },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER", _IOC_WRITE, 0x5346, 0x60 },
 { "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT", _IOC_WRITE, 0x5330, 0x50 },
@@ -2442,6 +2634,7 @@
 { "sound/asound.h", "SNDRV_PCM_IOCTL_REWIND", _IOC_WRITE, 0x4146, 0x04 },
 { "sound/asound.h", "SNDRV_PCM_IOCTL_START", _IOC_NONE, 0x4142, 0x00 },
 { "sound/asound.h", "SNDRV_PCM_IOCTL_STATUS", _IOC_READ, 0x4120, 0x80 },
+{ "sound/asound.h", "SNDRV_PCM_IOCTL_STATUS_EXT", _IOC_READ|_IOC_WRITE, 0x4124, 0x80 },
 { "sound/asound.h", "SNDRV_PCM_IOCTL_SW_PARAMS", _IOC_READ|_IOC_WRITE, 0x4113, 0x68 },
 { "sound/asound.h", "SNDRV_PCM_IOCTL_SYNC_PTR", _IOC_READ|_IOC_WRITE, 0x4123, 0x88 },
 { "sound/asound.h", "SNDRV_PCM_IOCTL_TSTAMP", _IOC_WRITE, 0x4102, 0x04 },
@@ -2539,8 +2732,7 @@
 { "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_REMOVE_LAST_SAMPLES", _IOC_NONE, 0x4883, 0x00 },
 { "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_RESET_SAMPLES", _IOC_NONE, 0x4882, 0x00 },
 { "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_VERSION", _IOC_READ, 0x4880, 0x04 },
-{ "staging/android/android_alarm.h", "ANDROID_ALARM_SET_RTC", _IOC_WRITE, 0x6105, 0x10 },
-{ "staging/android/android_alarm.h", "ANDROID_ALARM_WAIT", _IOC_NONE, 0x6101, 0x00 },
+{ "sound/usb_stream.h", "SNDRV_USB_STREAM_IOCTL_SET_PARAMS", _IOC_WRITE, 0x4890, 0x10 },
 { "staging/android/ashmem.h", "ASHMEM_GET_NAME", _IOC_READ, 0x7702, 0x100 },
 { "staging/android/ashmem.h", "ASHMEM_GET_PIN_STATUS", _IOC_NONE, 0x7709, 0x00 },
 { "staging/android/ashmem.h", "ASHMEM_GET_PROT_MASK", _IOC_NONE, 0x7706, 0x00 },
@@ -2561,17 +2753,10 @@
 { "staging/android/ion_test.h", "ION_IOC_TEST_DMA_MAPPING", _IOC_WRITE, 0x49f1, 0x20 },
 { "staging/android/ion_test.h", "ION_IOC_TEST_KERNEL_MAPPING", _IOC_WRITE, 0x49f2, 0x20 },
 { "staging/android/ion_test.h", "ION_IOC_TEST_SET_FD", _IOC_NONE, 0x49f0, 0x00 },
-{ "staging/android/logger.h", "LOGGER_FLUSH_LOG", _IOC_NONE, 0xae04, 0x00 },
-{ "staging/android/logger.h", "LOGGER_GET_LOG_BUF_SIZE", _IOC_NONE, 0xae01, 0x00 },
-{ "staging/android/logger.h", "LOGGER_GET_LOG_LEN", _IOC_NONE, 0xae02, 0x00 },
-{ "staging/android/logger.h", "LOGGER_GET_NEXT_ENTRY_LEN", _IOC_NONE, 0xae03, 0x00 },
-{ "staging/android/logger.h", "LOGGER_GET_VERSION", _IOC_NONE, 0xae05, 0x00 },
-{ "staging/android/logger.h", "LOGGER_SET_VERSION", _IOC_NONE, 0xae06, 0x00 },
 { "staging/android/sw_sync.h", "SW_SYNC_IOC_CREATE_FENCE", _IOC_READ|_IOC_WRITE, 0x5700, 0x28 },
 { "staging/android/sw_sync.h", "SW_SYNC_IOC_INC", _IOC_WRITE, 0x5701, 0x04 },
 { "staging/android/sync.h", "SYNC_IOC_FENCE_INFO", _IOC_READ|_IOC_WRITE, 0x3e02, 0x28 },
 { "staging/android/sync.h", "SYNC_IOC_MERGE", _IOC_READ|_IOC_WRITE, 0x3e01, 0x28 },
-{ "staging/android/sync.h", "SYNC_IOC_WAIT", _IOC_WRITE, 0x3e00, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
 { "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
@@ -2613,5 +2798,11 @@
 { "xen/evtchn.h", "IOCTL_EVTCHN_NOTIFY", _IOC_NONE, 0x4504, 0x04 },
 { "xen/evtchn.h", "IOCTL_EVTCHN_RESET", _IOC_NONE, 0x4505, 0x00 },
 { "xen/evtchn.h", "IOCTL_EVTCHN_UNBIND", _IOC_NONE, 0x4503, 0x04 },
+{ "xen/gntdev.h", "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", _IOC_NONE, 0x4702, 0x18 },
+{ "xen/gntdev.h", "IOCTL_GNTDEV_GRANT_COPY", _IOC_NONE, 0x4708, 0x08 },
+{ "xen/gntdev.h", "IOCTL_GNTDEV_MAP_GRANT_REF", _IOC_NONE, 0x4700, 0x18 },
+{ "xen/gntdev.h", "IOCTL_GNTDEV_SET_MAX_GRANTS", _IOC_NONE, 0x4703, 0x04 },
+{ "xen/gntdev.h", "IOCTL_GNTDEV_SET_UNMAP_NOTIFY", _IOC_NONE, 0x4707, 0x10 },
+{ "xen/gntdev.h", "IOCTL_GNTDEV_UNMAP_GRANT_REF", _IOC_NONE, 0x4701, 0x10 },
 { "xen/xenbus_dev.h", "IOCTL_XENBUS_BACKEND_EVTCHN", _IOC_NONE, 0x4200, 0x00 },
 { "xen/xenbus_dev.h", "IOCTL_XENBUS_BACKEND_SETUP", _IOC_NONE, 0x4201, 0x00 },
diff --git a/linux/x32/syscallent.h b/linux/x32/syscallent.h
index 5ef4a66..965a5dc 100644
--- a/linux/x32/syscallent.h
+++ b/linux/x32/syscallent.h
@@ -325,6 +325,8 @@
 [324] = { 2,	0,		SEN(membarrier),		"membarrier",		},
 [325] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [326] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
+[327] = { 6,	TD,		SEN(printargs),			"64:preadv2"		},
+[328] = { 6,	TD,		SEN(printargs),			"64:pwritev2"		},
 [327 ... 511] = { },
 /*
  * x32-specific system call numbers start at 512 to avoid cache impact
diff --git a/linux/x86_64/syscallent.h b/linux/x86_64/syscallent.h
index 52d73bf..265d55f 100644
--- a/linux/x86_64/syscallent.h
+++ b/linux/x86_64/syscallent.h
@@ -325,3 +325,5 @@
 [324] = { 2,	0,		SEN(membarrier),		"membarrier",		},
 [325] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [326] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
+[327] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[328] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
diff --git a/loop.c b/loop.c
index 26aaca0..2de33c5 100644
--- a/loop.c
+++ b/loop.c
@@ -41,40 +41,40 @@
 	if (umove_or_printaddr(tcp, addr, &info))
 		return;
 
-	tprintf("{number=%d", info.lo_number);
+	tprintf("{lo_number=%d", info.lo_number);
 
 	if (!abbrev(tcp)) {
-		tprintf(", device=%#lx, inode=%lu, rdevice=%#lx",
+		tprintf(", lo_device=%#lx, lo_inode=%lu, lo_rdevice=%#lx",
 			(unsigned long) info.lo_device,
 			info.lo_inode,
 			(unsigned long) info.lo_rdevice);
 	}
 
-	tprintf(", offset=%#x", info.lo_offset);
+	tprintf(", lo_offset=%#x", info.lo_offset);
 
 	if (!abbrev(tcp) || info.lo_encrypt_type != LO_CRYPT_NONE) {
-		tprints(", encrypt_type=");
+		tprints(", lo_encrypt_type=");
 		printxval(loop_crypt_type_options, info.lo_encrypt_type,
 			"LO_CRYPT_???");
-		tprintf(", encrypt_key_size=%d", info.lo_encrypt_key_size);
+		tprintf(", lo_encrypt_key_size=%d", info.lo_encrypt_key_size);
 	}
 
-	tprints(", flags=");
+	tprints(", lo_flags=");
 	printflags(loop_flags_options, info.lo_flags, "LO_FLAGS_???");
 
-	tprints(", name=");
+	tprints(", lo_name=");
 	print_quoted_string(info.lo_name, LO_NAME_SIZE,
 			    QUOTE_0_TERMINATED);
 
 	if (!abbrev(tcp) || info.lo_encrypt_type != LO_CRYPT_NONE) {
-		tprints(", encrypt_key=");
+		tprints(", lo_encrypt_key=");
 		print_quoted_string((void *) info.lo_encrypt_key,
 				    LO_KEY_SIZE, 0);
 	}
 
 	if (!abbrev(tcp))
-		tprintf(", init={%#lx, %#lx}"
-			", reserved={%#x, %#x, %#x, %#x}}",
+		tprintf(", lo_init=[%#lx, %#lx]"
+			", reserved=[%#x, %#x, %#x, %#x]}",
 			info.lo_init[0], info.lo_init[1],
 			info.reserved[0], info.reserved[1],
 			info.reserved[2], info.reserved[3]);
@@ -92,9 +92,9 @@
 		return;
 
 	if (!abbrev(tcp)) {
-		tprintf("{device=%" PRIu64 ", inode=%" PRIu64 ", "
-			"rdevice=%" PRIu64 ", offset=%#" PRIx64 ", "
-			"sizelimit=%" PRIu64 ", number=%" PRIu32,
+		tprintf("{lo_device=%" PRIu64 ", lo_inode=%" PRIu64
+			", lo_rdevice=%" PRIu64 ", lo_offset=%#" PRIx64
+			", lo_sizelimit=%" PRIu64 ", lo_number=%" PRIu32,
 			(uint64_t) info64.lo_device,
 			(uint64_t) info64.lo_inode,
 			(uint64_t) info64.lo_rdevice,
@@ -102,37 +102,37 @@
 			(uint64_t) info64.lo_sizelimit,
 			(uint32_t) info64.lo_number);
 	} else {
-		tprintf("{offset=%#" PRIx64 ", number=%" PRIu32,
+		tprintf("{lo_offset=%#" PRIx64 ", lo_number=%" PRIu32,
 			(uint64_t) info64.lo_offset,
 			(uint32_t) info64.lo_number);
 	}
 
 	if (!abbrev(tcp) || info64.lo_encrypt_type != LO_CRYPT_NONE) {
-		tprints(", encrypt_type=");
+		tprints(", lo_encrypt_type=");
 		printxval(loop_crypt_type_options, info64.lo_encrypt_type,
 			"LO_CRYPT_???");
-		tprintf(", encrypt_key_size=%" PRIu32,
+		tprintf(", lo_encrypt_key_size=%" PRIu32,
 			info64.lo_encrypt_key_size);
 	}
 
-	tprints(", flags=");
+	tprints(", lo_flags=");
 	printflags(loop_flags_options, info64.lo_flags, "LO_FLAGS_???");
 
-	tprints(", file_name=");
+	tprints(", lo_file_name=");
 	print_quoted_string((void *) info64.lo_file_name,
 			    LO_NAME_SIZE, QUOTE_0_TERMINATED);
 
 	if (!abbrev(tcp) || info64.lo_encrypt_type != LO_CRYPT_NONE) {
-		tprints(", crypt_name=");
+		tprints(", lo_crypt_name=");
 		print_quoted_string((void *) info64.lo_crypt_name,
 				    LO_NAME_SIZE, QUOTE_0_TERMINATED);
-		tprints(", encrypt_key=");
+		tprints(", lo_encrypt_key=");
 		print_quoted_string((void *) info64.lo_encrypt_key,
 				    LO_KEY_SIZE, 0);
 	}
 
 	if (!abbrev(tcp))
-		tprintf(", init={%#" PRIx64 ", %#" PRIx64 "}}",
+		tprintf(", lo_init=[%#" PRIx64 ", %#" PRIx64 "]}",
 			(uint64_t) info64.lo_init[0],
 			(uint64_t) info64.lo_init[1]);
 	else
@@ -146,23 +146,19 @@
 		return RVAL_DECODED;
 
 	switch (code) {
-	case LOOP_SET_STATUS:
-		decode_loop_info(tcp, arg);
-		break;
-
 	case LOOP_GET_STATUS:
 		if (entering(tcp))
 			return 0;
+		/* fall through */
+	case LOOP_SET_STATUS:
 		decode_loop_info(tcp, arg);
 		break;
 
-	case LOOP_SET_STATUS64:
-		decode_loop_info64(tcp, arg);
-		break;
-
 	case LOOP_GET_STATUS64:
 		if (entering(tcp))
 			return 0;
+		/* fall through */
+	case LOOP_SET_STATUS64:
 		decode_loop_info64(tcp, arg);
 		break;
 
@@ -191,6 +187,12 @@
 		break;
 #endif
 
+#ifdef LOOP_SET_DIRECT_IO
+	case LOOP_SET_DIRECT_IO:
+		tprintf(", %lu", arg);
+		break;
+#endif
+
 	default:
 		return RVAL_DECODED;
 	}
diff --git a/lseek.c b/lseek.c
index cfc6b58..133ddd8 100644
--- a/lseek.c
+++ b/lseek.c
@@ -108,8 +108,8 @@
 	if (entering(tcp)) {
 		printfd(tcp, tcp->u_arg[0]);
 		tprintf(", %lld, ",
-			((unsigned long long) (unsigned long) tcp->u_arg[1]) << 32
-			| (unsigned long long) (unsigned long) tcp->u_arg[2]);
+			(widen_to_ull(tcp->u_arg[1]) << 32)
+			| widen_to_ull(tcp->u_arg[2]));
 	} else {
 		printnum_int64(tcp, tcp->u_arg[3], "%" PRIu64);
 		tprints(", ");
diff --git a/m32_funcs.h b/m32_funcs.h
new file mode 100644
index 0000000..f4b8672
--- /dev/null
+++ b/m32_funcs.h
@@ -0,0 +1,19 @@
+#undef sys_readdir
+#define sys_readdir m32_sys_readdir
+#undef sys_getdents
+#define sys_getdents m32_sys_getdents
+#undef sys_msgctl
+#define sys_msgctl m32_sys_msgctl
+#undef sys_shmctl
+#define sys_shmctl m32_sys_shmctl
+#undef sys_time
+#define sys_time m32_sys_time
+#undef sys_sigaltstack
+#define sys_sigaltstack m32_sys_sigaltstack
+#undef sys_sysinfo
+#define sys_sysinfo m32_sys_sysinfo
+#undef sys_times
+#define sys_times m32_sys_times
+#undef sys_utime
+#define sys_utime m32_sys_utime
+#include "sys_func.h"
diff --git a/m32_printer_decls.h b/m32_printer_decls.h
new file mode 100644
index 0000000..bd2c6fa
--- /dev/null
+++ b/m32_printer_decls.h
@@ -0,0 +1,28 @@
+/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sigaltstack.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
+extern int m32_block_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
+extern int m32_btrfs_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
+extern int m32_evdev_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
+extern _Bool m32_fetch_seccomp_fprog(struct tcb *tcp, const long addr, void *p);
+extern _Bool m32_fetch_struct_flock(struct tcb *tcp, const long addr, void *p);
+extern _Bool m32_fetch_struct_flock64(struct tcb *tcp, const long addr, void *p);
+extern _Bool m32_fetch_struct_statfs(struct tcb *tcp, const long addr, struct strace_statfs *p);
+extern _Bool m32_fetch_struct_statfs64(struct tcb *tcp, const long addr, const unsigned long size, struct strace_statfs *p);
+extern int m32_hdio_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
+extern int m32_mtd_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
+extern void m32_printmqattr(struct tcb *tcp, const long addr);
+extern void m32_tprint_msgbuf(struct tcb *tcp, const long addr, const unsigned long count);
+extern void m32_print_sigevent(struct tcb *tcp, const long addr);
+extern void m32_print_timespec(struct tcb *tcp, const long addr);
+extern const char * m32_sprint_timespec(struct tcb *tcp, const long addr);
+extern void m32_print_timespec_utime_pair(struct tcb *tcp, const long addr);
+extern void m32_print_itimerspec(struct tcb *tcp, const long addr);
+extern void m32_print_timeval(struct tcb *tcp, const long addr);
+extern void m32_print_timeval_pair(struct tcb *tcp, const long addr);
+extern const char * m32_sprint_timeval(struct tcb *tcp, const long addr);
+extern void m32_print_itimerval(struct tcb *tcp, const long addr);
+extern int m32_print_timex(struct tcb *tcp, const long addr);
+extern void m32_printrusage(struct tcb *tcp, long addr);
+extern void m32_printsiginfo_at(struct tcb *tcp, long addr);
+extern void m32_print_siginfo_array(struct tcb *tcp, unsigned long addr, unsigned long len);
+extern int m32_rtc_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
+extern int m32_v4l2_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
diff --git a/m32_printer_defs.h b/m32_printer_defs.h
new file mode 100644
index 0000000..8d3ea27
--- /dev/null
+++ b/m32_printer_defs.h
@@ -0,0 +1,28 @@
+/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sigaltstack.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
+.block_ioctl = m32_block_ioctl,
+.btrfs_ioctl = m32_btrfs_ioctl,
+.evdev_ioctl = m32_evdev_ioctl,
+.fetch_seccomp_fprog = m32_fetch_seccomp_fprog,
+.fetch_struct_flock = m32_fetch_struct_flock,
+.fetch_struct_flock64 = m32_fetch_struct_flock64,
+.fetch_struct_statfs = m32_fetch_struct_statfs,
+.fetch_struct_statfs64 = m32_fetch_struct_statfs64,
+.hdio_ioctl = m32_hdio_ioctl,
+.mtd_ioctl = m32_mtd_ioctl,
+.printmqattr = m32_printmqattr,
+.tprint_msgbuf = m32_tprint_msgbuf,
+.print_sigevent = m32_print_sigevent,
+.print_timespec = m32_print_timespec,
+.sprint_timespec = m32_sprint_timespec,
+.print_timespec_utime_pair = m32_print_timespec_utime_pair,
+.print_itimerspec = m32_print_itimerspec,
+.print_timeval = m32_print_timeval,
+.print_timeval_pair = m32_print_timeval_pair,
+.sprint_timeval = m32_sprint_timeval,
+.print_itimerval = m32_print_itimerval,
+.print_timex = m32_print_timex,
+.printrusage = m32_printrusage,
+.printsiginfo_at = m32_printsiginfo_at,
+.print_siginfo_array = m32_print_siginfo_array,
+.rtc_ioctl = m32_rtc_ioctl,
+.v4l2_ioctl = m32_v4l2_ioctl,
diff --git a/m32_type_defs.h b/m32_type_defs.h
new file mode 100644
index 0000000..62edb7b
--- /dev/null
+++ b/m32_type_defs.h
@@ -0,0 +1,121 @@
+#ifdef MPERS_m32_struct_blk_user_trace_setup
+# define struct_blk_user_trace_setup MPERS_m32_struct_blk_user_trace_setup
+#endif
+#ifdef MPERS_m32_struct_blkpg_ioctl_arg
+# define struct_blkpg_ioctl_arg MPERS_m32_struct_blkpg_ioctl_arg
+#endif
+#ifdef MPERS_m32_struct_blkpg_partition
+# define struct_blkpg_partition MPERS_m32_struct_blkpg_partition
+#endif
+#ifdef MPERS_m32_struct_btrfs_ioctl_dev_replace_args
+# define struct_btrfs_ioctl_dev_replace_args MPERS_m32_struct_btrfs_ioctl_dev_replace_args
+#endif
+#ifdef MPERS_m32_struct_btrfs_ioctl_send_args
+# define struct_btrfs_ioctl_send_args MPERS_m32_struct_btrfs_ioctl_send_args
+#endif
+#ifdef MPERS_m32_struct_btrfs_ioctl_received_subvol_args
+# define struct_btrfs_ioctl_received_subvol_args MPERS_m32_struct_btrfs_ioctl_received_subvol_args
+#endif
+#ifdef MPERS_m32_kernel_dirent
+# define kernel_dirent MPERS_m32_kernel_dirent
+#endif
+#ifdef MPERS_m32_struct_ff_effect
+# define struct_ff_effect MPERS_m32_struct_ff_effect
+#endif
+#ifdef MPERS_m32_seccomp_fprog_t
+# define seccomp_fprog_t MPERS_m32_seccomp_fprog_t
+#endif
+#ifdef MPERS_m32_struct_flock
+# define struct_flock MPERS_m32_struct_flock
+#endif
+#ifdef MPERS_m32_struct_flock64
+# define struct_flock64 MPERS_m32_struct_flock64
+#endif
+#ifdef MPERS_m32_struct_statfs
+# define struct_statfs MPERS_m32_struct_statfs
+#endif
+#ifdef MPERS_m32_struct_statfs64
+# define struct_statfs64 MPERS_m32_struct_statfs64
+#endif
+#ifdef MPERS_m32_struct_hd_geometry
+# define struct_hd_geometry MPERS_m32_struct_hd_geometry
+#endif
+#ifdef MPERS_m32_msqid_ds_t
+# define msqid_ds_t MPERS_m32_msqid_ds_t
+#endif
+#ifdef MPERS_m32_shmid_ds_t
+# define shmid_ds_t MPERS_m32_shmid_ds_t
+#endif
+#ifdef MPERS_m32_struct_mtd_oob_buf
+# define struct_mtd_oob_buf MPERS_m32_struct_mtd_oob_buf
+#endif
+#ifdef MPERS_m32_mq_attr_t
+# define mq_attr_t MPERS_m32_mq_attr_t
+#endif
+#ifdef MPERS_m32_msgbuf_t
+# define msgbuf_t MPERS_m32_msgbuf_t
+#endif
+#ifdef MPERS_m32_struct_sigevent
+# define struct_sigevent MPERS_m32_struct_sigevent
+#endif
+#ifdef MPERS_m32_time_t
+# define time_t MPERS_m32_time_t
+#endif
+#ifdef MPERS_m32_timespec_t
+# define timespec_t MPERS_m32_timespec_t
+#endif
+#ifdef MPERS_m32_timeval_t
+# define timeval_t MPERS_m32_timeval_t
+#endif
+#ifdef MPERS_m32_struct_timex
+# define struct_timex MPERS_m32_struct_timex
+#endif
+#ifdef MPERS_m32_rusage_t
+# define rusage_t MPERS_m32_rusage_t
+#endif
+#ifdef MPERS_m32_siginfo_t
+# define siginfo_t MPERS_m32_siginfo_t
+#endif
+#ifdef MPERS_m32_struct_rtc_pll_info
+# define struct_rtc_pll_info MPERS_m32_struct_rtc_pll_info
+#endif
+#ifdef MPERS_m32_stack_t
+# define stack_t MPERS_m32_stack_t
+#endif
+#ifdef MPERS_m32_sysinfo_t
+# define sysinfo_t MPERS_m32_sysinfo_t
+#endif
+#ifdef MPERS_m32_tms_t
+# define tms_t MPERS_m32_tms_t
+#endif
+#ifdef MPERS_m32_utimbuf_t
+# define utimbuf_t MPERS_m32_utimbuf_t
+#endif
+#ifdef MPERS_m32_struct_v4l2_buffer
+# define struct_v4l2_buffer MPERS_m32_struct_v4l2_buffer
+#endif
+#ifdef MPERS_m32_struct_v4l2_create_buffers
+# define struct_v4l2_create_buffers MPERS_m32_struct_v4l2_create_buffers
+#endif
+#ifdef MPERS_m32_struct_v4l2_ext_control
+# define struct_v4l2_ext_control MPERS_m32_struct_v4l2_ext_control
+#endif
+#ifdef MPERS_m32_struct_v4l2_ext_controls
+# define struct_v4l2_ext_controls MPERS_m32_struct_v4l2_ext_controls
+#endif
+#ifdef MPERS_m32_struct_v4l2_format
+# define struct_v4l2_format MPERS_m32_struct_v4l2_format
+#endif
+#ifdef MPERS_m32_struct_v4l2_framebuffer
+# define struct_v4l2_framebuffer MPERS_m32_struct_v4l2_framebuffer
+#endif
+#ifdef MPERS_m32_struct_v4l2_input
+# define struct_v4l2_input MPERS_m32_struct_v4l2_input
+#endif
+#ifdef MPERS_m32_struct_v4l2_standard
+# define struct_v4l2_standard MPERS_m32_struct_v4l2_standard
+#endif
+#undef MPERS_PRINTER_NAME
+#define MPERS_PRINTER_NAME(printer_name) printer_name
+#include "m32_printer_decls.h"
+#include MPERS_m32_IOCTL_MACROS
diff --git a/m4/ax_code_coverage.m4 b/m4/ax_code_coverage.m4
index b621fdd..93dfce3 100644
--- a/m4/ax_code_coverage.m4
+++ b/m4/ax_code_coverage.m4
@@ -8,15 +8,15 @@
 #
 # DESCRIPTION
 #
-#   Defines CODE_COVERAGE_CPPFLAGS, CODE_COVERAGE_CFLAGS and
-#   CODE_COVERAGE_LDFLAGS which should be included in the CPPFLAGS, CFLAGS
-#   and LIBS/LDFLAGS variables of every build target (program or library)
-#   which should be built with code coverage support. Also defines
-#   CODE_COVERAGE_RULES which should be substituted in your Makefile; and
-#   $enable_code_coverage which can be used in subsequent configure output.
-#   CODE_COVERAGE_ENABLED is defined and substituted, and corresponds to the
-#   value of the --enable-code-coverage option, which defaults to being
-#   disabled.
+#   Defines CODE_COVERAGE_CPPFLAGS, CODE_COVERAGE_CFLAGS,
+#   CODE_COVERAGE_CXXFLAGS and CODE_COVERAGE_LDFLAGS which should be
+#   included in the CPPFLAGS, CFLAGS CXXFLAGS and LIBS/LDFLAGS variables of
+#   every build target (program or library) which should be built with code
+#   coverage support. Also defines CODE_COVERAGE_RULES which should be
+#   substituted in your Makefile; and $enable_code_coverage which can be
+#   used in subsequent configure output. CODE_COVERAGE_ENABLED is defined
+#   and substituted, and corresponds to the value of the
+#   --enable-code-coverage option, which defaults to being disabled.
 #
 #   Test also for gcov program and create GCOV variable that could be
 #   substituted.
@@ -36,6 +36,7 @@
 #     my_program_LIBS = ... $(CODE_COVERAGE_LDFLAGS) ...
 #     my_program_CPPFLAGS = ... $(CODE_COVERAGE_CPPFLAGS) ...
 #     my_program_CFLAGS = ... $(CODE_COVERAGE_CFLAGS) ...
+#     my_program_CXXFLAGS = ... $(CODE_COVERAGE_CXXFLAGS) ...
 #
 #   This results in a "check-code-coverage" rule being added to any
 #   Makefile.am which includes "@CODE_COVERAGE_RULES@" (assuming the module
@@ -49,7 +50,7 @@
 #
 # LICENSE
 #
-#   Copyright (c) 2012 Philip Withnall
+#   Copyright (c) 2012, 2016 Philip Withnall
 #   Copyright (c) 2012 Xan Lopez
 #   Copyright (c) 2012 Christian Persch
 #   Copyright (c) 2012 Paolo Borelli
@@ -69,7 +70,7 @@
 #   You should have received a copy of the GNU Lesser General Public License
 #   along with this program. If not, see <http://www.gnu.org/licenses/>.
 
-#serial 9
+#serial 16
 
 AC_DEFUN([AX_CODE_COVERAGE],[
 	dnl Check for --enable-code-coverage
@@ -141,18 +142,21 @@
 		dnl Build the code coverage flags
 		CODE_COVERAGE_CPPFLAGS="-DNDEBUG"
 		CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
+		CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
 		CODE_COVERAGE_LDFLAGS="-lgcov"
 
 		AC_SUBST([CODE_COVERAGE_CPPFLAGS])
 		AC_SUBST([CODE_COVERAGE_CFLAGS])
+		AC_SUBST([CODE_COVERAGE_CXXFLAGS])
 		AC_SUBST([CODE_COVERAGE_LDFLAGS])
 	])
 
-CODE_COVERAGE_RULES='
+[CODE_COVERAGE_RULES='
 # Code coverage
 #
 # Optional:
 #  - CODE_COVERAGE_DIRECTORY: Top-level directory for code coverage reporting.
+#    Multiple directories may be specified, separated by whitespace.
 #    (Default: $(top_builddir))
 #  - CODE_COVERAGE_OUTPUT_FILE: Filename and path for the .info file generated
 #    by lcov for code coverage. (Default:
@@ -160,13 +164,26 @@
 #  - CODE_COVERAGE_OUTPUT_DIRECTORY: Directory for generated code coverage
 #    reports to be created. (Default:
 #    $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage)
+#  - CODE_COVERAGE_BRANCH_COVERAGE: Set to 1 to enforce branch coverage,
+#    set to 0 to disable it and leave empty to stay with the default.
+#    (Default: empty)
+#  - CODE_COVERAGE_LCOV_SHOPTS_DEFAULT: Extra options shared between both lcov
+#    instances. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE)
+#  - CODE_COVERAGE_LCOV_SHOPTS: Extra options to shared between both lcov
+#    instances. (Default: $CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
 #  - CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH: --gcov-tool pathtogcov
-#  - CODE_COVERAGE_LCOV_OPTIONS_DEFAULT: Extra options to pass to the lcov instance.
-#    (Default: $CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
-#  - CODE_COVERAGE_LCOV_OPTIONS: Extra options to pass to the lcov instance.
-#    (Default: $CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
+#  - CODE_COVERAGE_LCOV_OPTIONS_DEFAULT: Extra options to pass to the
+#    collecting lcov instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
+#  - CODE_COVERAGE_LCOV_OPTIONS: Extra options to pass to the collecting lcov
+#    instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
+#  - CODE_COVERAGE_LCOV_RMOPTS_DEFAULT: Extra options to pass to the filtering
+#    lcov instance. (Default: empty)
+#  - CODE_COVERAGE_LCOV_RMOPTS: Extra options to pass to the filtering lcov
+#    instance. (Default: $CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
+#  - CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT: Extra options to pass to the
+#    genhtml instance. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE)
 #  - CODE_COVERAGE_GENHTML_OPTIONS: Extra options to pass to the genhtml
-#    instance. (Default: empty)
+#    instance. (Default: $CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
 #  - CODE_COVERAGE_IGNORE_PATTERN: Extra glob pattern of files to ignore
 #
 # The generated report will be titled using the $(PACKAGE_NAME) and
@@ -177,10 +194,19 @@
 CODE_COVERAGE_DIRECTORY ?= $(top_builddir)
 CODE_COVERAGE_OUTPUT_FILE ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info
 CODE_COVERAGE_OUTPUT_DIRECTORY ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage
+CODE_COVERAGE_BRANCH_COVERAGE ?=
+CODE_COVERAGE_LCOV_SHOPTS_DEFAULT ?= $(if $(CODE_COVERAGE_BRANCH_COVERAGE),\
+--rc lcov_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE))
+CODE_COVERAGE_LCOV_SHOPTS ?= $(CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
 CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH ?= --gcov-tool "$(GCOV)"
 CODE_COVERAGE_LCOV_OPTIONS_DEFAULT ?= $(CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
 CODE_COVERAGE_LCOV_OPTIONS ?= $(CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
-CODE_COVERAGE_GENHTML_OPTIONS ?=
+CODE_COVERAGE_LCOV_RMOPTS_DEFAULT ?=
+CODE_COVERAGE_LCOV_RMOPTS ?= $(CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
+CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT ?=\
+$(if $(CODE_COVERAGE_BRANCH_COVERAGE),\
+--rc genhtml_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE))
+CODE_COVERAGE_GENHTML_OPTIONS ?= $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULTS)
 CODE_COVERAGE_IGNORE_PATTERN ?=
 
 code_coverage_v_lcov_cap = $(code_coverage_v_lcov_cap_$(V))
@@ -198,6 +224,9 @@
 code_coverage_quiet_ = $(code_coverage_quiet_$(AM_DEFAULT_VERBOSITY))
 code_coverage_quiet_0 = --quiet
 
+# sanitizes the test-name: replaces with underscores: dashes and dots
+code_coverage_sanitize = $(subst -,_,$(subst .,_,$(1)))
+
 # Use recursive makes in order to ignore errors during check
 check-code-coverage:
 ifeq ($(CODE_COVERAGE_ENABLED),yes)
@@ -210,10 +239,10 @@
 # Capture code coverage data
 code-coverage-capture: code-coverage-capture-hook
 ifeq ($(CODE_COVERAGE_ENABLED),yes)
-	$(code_coverage_v_lcov_cap)$(LCOV) $(code_coverage_quiet) --directory $(CODE_COVERAGE_DIRECTORY) --capture --output-file "$(CODE_COVERAGE_OUTPUT_FILE).tmp" --test-name "$(PACKAGE_NAME)-$(PACKAGE_VERSION)" --no-checksum --compat-libtool $(CODE_COVERAGE_LCOV_OPTIONS)
-	$(code_coverage_v_lcov_ign)$(LCOV) $(code_coverage_quiet) --directory $(CODE_COVERAGE_DIRECTORY) --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" $(CODE_COVERAGE_IGNORE_PATTERN) --output-file "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_LCOV_OPTIONS)
+	$(code_coverage_v_lcov_cap)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --capture --output-file "$(CODE_COVERAGE_OUTPUT_FILE).tmp" --test-name "$(call code_coverage_sanitize,$(PACKAGE_NAME)-$(PACKAGE_VERSION))" --no-checksum --compat-libtool $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_OPTIONS)
+	$(code_coverage_v_lcov_ign)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" $(CODE_COVERAGE_IGNORE_PATTERN) --output-file "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_RMOPTS)
 	-@rm -f $(CODE_COVERAGE_OUTPUT_FILE).tmp
-	$(code_coverage_v_genhtml)LANG=C $(GENHTML) $(code_coverage_quiet) --prefix $(CODE_COVERAGE_DIRECTORY) --output-directory "$(CODE_COVERAGE_OUTPUT_DIRECTORY)" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_GENHTML_OPTIONS)
+	$(code_coverage_v_genhtml)LANG=C $(GENHTML) $(code_coverage_quiet) $(addprefix --prefix ,$(CODE_COVERAGE_DIRECTORY)) --output-directory "$(CODE_COVERAGE_OUTPUT_DIRECTORY)" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_GENHTML_OPTIONS)
 	@echo "file://$(abs_builddir)/$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html"
 else
 	@echo "Need to reconfigure with --enable-code-coverage"
@@ -224,20 +253,21 @@
 
 ifeq ($(CODE_COVERAGE_ENABLED),yes)
 clean: code-coverage-clean
+distclean: code-coverage-clean
 code-coverage-clean:
 	-$(LCOV) --directory $(top_builddir) -z
 	-rm -rf $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_FILE).tmp $(CODE_COVERAGE_OUTPUT_DIRECTORY)
-	-find . -name "*.gcda" -o -name "*.gcov" -delete
+	-find . \( -name "*.gcda" -o -name "*.gcno" -o -name "*.gcov" \) -delete
 endif
 
 GITIGNOREFILES ?=
 GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY)
 
-DISTCHECK_CONFIGURE_FLAGS ?=
-DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage
+A''M_DISTCHECK_CONFIGURE_FLAGS ?=
+A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage
 
 .PHONY: check-code-coverage code-coverage-capture code-coverage-capture-hook code-coverage-clean
-'
+']
 
 	AC_SUBST([CODE_COVERAGE_RULES])
 	m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([CODE_COVERAGE_RULES])])
diff --git a/maint/ioctls_sym.sh b/maint/ioctls_sym.sh
index c408b91..7fff303 100755
--- a/maint/ioctls_sym.sh
+++ b/maint/ioctls_sym.sh
@@ -239,26 +239,28 @@
 			;;
 		*linux/kvm.h)
 			cat <<'__EOF__'
-#if defined __x86_64__ || defined __i386__
+#if !(defined __powerpc__)
 struct kvm_allocate_rma { __u32 unused[2]; };
 struct kvm_create_spapr_tce { __u32 unused[3]; };
+struct kvm_create_spapr_tce_64 { __u32 unused[8]; };
 struct kvm_get_htab_fd { __u32 unused[8]; };
 struct kvm_rtas_token_args { __u8 unused[128]; };
+#endif
+
+#if !(defined __arm64__ || defined __arm__)
 struct kvm_vcpu_init { __u32 unused[8]; };
-#elif defined __arm64__ || defined __arm__
-struct kvm_allocate_rma { __u32 unused[2]; };
+#endif
+
+#if !(defined __x86_64__ || defined __i386__)
 struct kvm_cpuid { __u32 unused[2]; };
 struct kvm_cpuid2 { __u32 unused[2]; };
-struct kvm_create_spapr_tce { __u32 unused[3]; };
 struct kvm_debugregs { __u32 unused[32]; };
-struct kvm_get_htab_fd { __u32 unused[8]; };
 struct kvm_lapic_state { __u32 unused[256]; };
 struct kvm_memory_alias { __u32 unused[8]; };
 struct kvm_msr_list { __u32 unused[1]; };
 struct kvm_msrs { __u32 unused[2]; };
 struct kvm_pit_state { __u32 unused[18]; };
 struct kvm_pit_state2 { __u32 unused[28]; };
-struct kvm_rtas_token_args { __u32 unused[128]; };
 struct kvm_vcpu_events { __u32 unused[16]; };
 struct kvm_x86_mce { __u32 unused[16]; };
 struct kvm_xcrs { __u32 unused[98]; };
diff --git a/mem.c b/mem.c
index 53793e6..b2c7abb 100644
--- a/mem.c
+++ b/mem.c
@@ -65,13 +65,13 @@
 
 	printaddr(addr);
 	tprintf(", %lu, ", len);
-	printflags(mmap_prot, prot, "PROT_???");
+	printflags_long(mmap_prot, prot, "PROT_???");
 	tprints(", ");
 #ifdef MAP_TYPE
-	printxval(mmap_flags, flags & MAP_TYPE, "MAP_???");
+	printxval_long(mmap_flags, flags & MAP_TYPE, "MAP_???");
 	addflags(mmap_flags, flags & ~MAP_TYPE);
 #else
-	printflags(mmap_flags, flags, "MAP_???");
+	printflags_long(mmap_flags, flags, "MAP_???");
 #endif
 	tprints(", ");
 	printfd(tcp, fd);
@@ -86,37 +86,31 @@
  * Confused? Me too!
  */
 
+#if defined AARCH64 || defined ARM \
+ || defined I386 || defined X86_64 || defined X32 \
+ || defined M68K \
+ || defined S390 || defined S390X
 /* Params are pointed to by u_arg[0], offset is in bytes */
 SYS_FUNC(old_mmap)
 {
 	long u_arg[6];
-#if defined(IA64)
-	/*
-	 * IA64 processes never call this routine, they only use the
-	 * new 'sys_mmap' interface. Only IA32 processes come here.
-	 */
-	int i;
-	unsigned narrow_arg[6];
-	if (umoven(tcp, tcp->u_arg[0], sizeof(narrow_arg), narrow_arg) == -1)
-		return 0;
+# if defined AARCH64 || defined X86_64
+	/* We are here only in a 32-bit personality. */
+	unsigned int narrow_arg[6];
+	if (umove_or_printaddr(tcp, tcp->u_arg[0], &narrow_arg))
+		return RVAL_DECODED | RVAL_HEX;
+	unsigned int i;
 	for (i = 0; i < 6; i++)
-		u_arg[i] = (unsigned long) narrow_arg[i];
-#elif defined(X86_64)
-	/* We are here only in personality 1 (i386) */
-	int i;
-	unsigned narrow_arg[6];
-	if (umoven(tcp, tcp->u_arg[0], sizeof(narrow_arg), narrow_arg) == -1)
-		return 0;
-	for (i = 0; i < 6; ++i)
-		u_arg[i] = (unsigned long) narrow_arg[i];
-#else
-	if (umoven(tcp, tcp->u_arg[0], sizeof(u_arg), u_arg) == -1)
-		return 0;
-#endif
+		u_arg[i] = narrow_arg[i];
+# else
+	if (umove_or_printaddr(tcp, tcp->u_arg[0], &u_arg))
+		return RVAL_DECODED | RVAL_HEX;
+# endif
 	print_mmap(tcp, u_arg, (unsigned long) u_arg[5]);
 
 	return RVAL_DECODED | RVAL_HEX;
 }
+#endif /* old_mmap architectures */
 
 #if defined(S390)
 /* Params are pointed to by u_arg[0], offset is in pages */
@@ -191,7 +185,7 @@
 {
 	printaddr(tcp->u_arg[0]);
 	tprintf(", %lu, ", tcp->u_arg[1]);
-	printflags(mmap_prot, tcp->u_arg[2], "PROT_???");
+	printflags_long(mmap_prot, tcp->u_arg[2], "PROT_???");
 
 	return RVAL_DECODED;
 }
@@ -202,7 +196,7 @@
 {
 	printaddr(tcp->u_arg[0]);
 	tprintf(", %lu, %lu, ", tcp->u_arg[1], tcp->u_arg[2]);
-	printflags(mremap_flags, tcp->u_arg[3], "MREMAP_???");
+	printflags_long(mremap_flags, tcp->u_arg[3], "MREMAP_???");
 #ifdef MREMAP_FIXED
 	if ((tcp->u_arg[3] & (MREMAP_MAYMOVE | MREMAP_FIXED)) ==
 	    (MREMAP_MAYMOVE | MREMAP_FIXED)) {
@@ -309,240 +303,40 @@
 
 	printaddr(addr);
 	tprintf(", %lu, ", size);
-	printflags(mmap_prot, prot, "PROT_???");
+	printflags_long(mmap_prot, prot, "PROT_???");
 	tprintf(", %lu, ", pgoff);
 #ifdef MAP_TYPE
-	printxval(mmap_flags, flags & MAP_TYPE, "MAP_???");
+	printxval_long(mmap_flags, flags & MAP_TYPE, "MAP_???");
 	addflags(mmap_flags, flags & ~MAP_TYPE);
 #else
-	printflags(mmap_flags, flags, "MAP_???");
+	printflags_long(mmap_flags, flags, "MAP_???");
 #endif
 
 	return RVAL_DECODED;
 }
 
-#define MPOL_DEFAULT    0
-#define MPOL_PREFERRED  1
-#define MPOL_BIND       2
-#define MPOL_INTERLEAVE 3
-
-#define MPOL_F_NODE     (1<<0)
-#define MPOL_F_ADDR     (1<<1)
-
-#define MPOL_MF_STRICT  (1<<0)
-#define MPOL_MF_MOVE	(1<<1)
-#define MPOL_MF_MOVE_ALL (1<<2)
-
-#include "xlat/policies.h"
-#include "xlat/mbindflags.h"
-#include "xlat/mempolicyflags.h"
-#include "xlat/move_pages_flags.h"
-
-static void
-get_nodes(struct tcb *tcp, unsigned long ptr, unsigned long maxnodes, int err)
-{
-	unsigned long nlongs, size, end;
-
-	nlongs = (maxnodes + 8 * sizeof(long) - 1) / (8 * sizeof(long));
-	size = nlongs * sizeof(long);
-	end = ptr + size;
-	if (nlongs == 0 || ((err || verbose(tcp)) && (size * 8 == maxnodes)
-			    && (end > ptr))) {
-		unsigned long n, cur, abbrev_end;
-		int failed = 0;
-
-		if (abbrev(tcp)) {
-			abbrev_end = ptr + max_strlen * sizeof(long);
-			if (abbrev_end < ptr)
-				abbrev_end = end;
-		} else {
-			abbrev_end = end;
-		}
-		tprints(", {");
-		for (cur = ptr; cur < end; cur += sizeof(long)) {
-			if (cur > ptr)
-				tprints(", ");
-			if (cur >= abbrev_end) {
-				tprints("...");
-				break;
-			}
-			if (umoven(tcp, cur, sizeof(n), &n) < 0) {
-				tprints("?");
-				failed = 1;
-				break;
-			}
-			tprintf("%#0*lx", (int) sizeof(long) * 2 + 2, n);
-		}
-		tprints("}");
-		if (failed) {
-			tprints(" ");
-			printaddr(ptr);
-		}
-	} else {
-		tprints(" ");
-		printaddr(ptr);
-	}
-	tprintf(", %lu", maxnodes);
-}
-
-SYS_FUNC(mbind)
-{
-	printaddr(tcp->u_arg[0]);
-	tprintf(", %lu, ", tcp->u_arg[1]);
-	printxval(policies, tcp->u_arg[2], "MPOL_???");
-	get_nodes(tcp, tcp->u_arg[3], tcp->u_arg[4], 0);
-	tprints(", ");
-	printflags(mbindflags, tcp->u_arg[5], "MPOL_???");
-
-	return RVAL_DECODED;
-}
-
-SYS_FUNC(set_mempolicy)
-{
-	printxval(policies, tcp->u_arg[0], "MPOL_???");
-	get_nodes(tcp, tcp->u_arg[1], tcp->u_arg[2], 0);
-
-	return RVAL_DECODED;
-}
-
-SYS_FUNC(get_mempolicy)
-{
-	if (exiting(tcp)) {
-		int pol;
-		if (!umove_or_printaddr(tcp, tcp->u_arg[0], &pol))
-			printxval(policies, pol, "MPOL_???");
-		get_nodes(tcp, tcp->u_arg[1], tcp->u_arg[2], syserror(tcp));
-		tprints(", ");
-		printaddr(tcp->u_arg[3]);
-		tprints(", ");
-		printflags(mempolicyflags, tcp->u_arg[4], "MPOL_???");
-	}
-	return 0;
-}
-
-SYS_FUNC(migrate_pages)
-{
-	tprintf("%ld, ", (long) (pid_t) tcp->u_arg[0]);
-	get_nodes(tcp, tcp->u_arg[2], tcp->u_arg[1], 0);
-	tprints(", ");
-	get_nodes(tcp, tcp->u_arg[3], tcp->u_arg[1], 0);
-
-	return RVAL_DECODED;
-}
-
-SYS_FUNC(move_pages)
-{
-	if (entering(tcp)) {
-		unsigned long npages = tcp->u_arg[1];
-		tprintf("%ld, %lu, ", tcp->u_arg[0], npages);
-		if (tcp->u_arg[2] == 0)
-			tprints("NULL, ");
-		else {
-			unsigned int i;
-			long puser = tcp->u_arg[2];
-			tprints("{");
-			for (i = 0; i < npages; ++i) {
-				void *p;
-				if (i > 0)
-					tprints(", ");
-				if (umove(tcp, puser, &p) < 0) {
-					tprints("???");
-					break;
-				}
-				tprintf("%p", p);
-				puser += sizeof(void *);
-			}
-			tprints("}, ");
-		}
-		if (tcp->u_arg[3] == 0)
-			tprints("NULL, ");
-		else {
-			unsigned int i;
-			long nodeuser = tcp->u_arg[3];
-			tprints("{");
-			for (i = 0; i < npages; ++i) {
-				int node;
-				if (i > 0)
-					tprints(", ");
-				if (umove(tcp, nodeuser, &node) < 0) {
-					tprints("???");
-					break;
-				}
-				tprintf("%#x", node);
-				nodeuser += sizeof(int);
-			}
-			tprints("}, ");
-		}
-	} else {
-		unsigned long npages = tcp->u_arg[1];
-		if (tcp->u_arg[4] == 0)
-			tprints("NULL, ");
-		else {
-			unsigned int i;
-			long statususer = tcp->u_arg[4];
-			tprints("{");
-			for (i = 0; i < npages; ++i) {
-				int status;
-				if (i > 0)
-					tprints(", ");
-				if (umove(tcp, statususer, &status) < 0) {
-					tprints("???");
-					break;
-				}
-				tprintf("%#x", status);
-				statususer += sizeof(int);
-			}
-			tprints("}, ");
-		}
-		printflags(move_pages_flags, tcp->u_arg[5], "MPOL_???");
-	}
-	return 0;
-}
-
 #if defined(POWERPC)
+static bool
+print_protmap_entry(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
+{
+	tprintf("%#08x", * (unsigned int *) elem_buf);
+
+	return true;
+}
+
 SYS_FUNC(subpage_prot)
 {
-	unsigned long cur, end, abbrev_end, entries;
-	unsigned int entry;
+	unsigned long addr = tcp->u_arg[0];
+	unsigned long len = tcp->u_arg[1];
+	unsigned long nmemb = len >> 16;
+	unsigned long map = tcp->u_arg[2];
 
-	printaddr(tcp->u_arg[0]);
-	tprints(", ");
-	printaddr(tcp->u_arg[1]);
-	tprints(", ");
-	entries = tcp->u_arg[1] >> 16;
-	if (!entries || !tcp->u_arg[2]) {
-		tprints("{}");
-		return 0;
-	}
-	cur = tcp->u_arg[2];
-	end = cur + (sizeof(int) * entries);
-	if (!verbose(tcp) || end < (unsigned long) tcp->u_arg[2]) {
-		printaddr(tcp->u_arg[2]);
-		return 0;
-	}
-	if (abbrev(tcp)) {
-		abbrev_end = cur + (sizeof(int) * max_strlen);
-		if (abbrev_end > end)
-			abbrev_end = end;
-	}
-	else
-		abbrev_end = end;
-	tprints("{");
-	for (; cur < end; cur += sizeof(int)) {
-		if (cur > (unsigned long) tcp->u_arg[2])
-			tprints(", ");
-		if (cur >= abbrev_end) {
-			tprints("...");
-			break;
-		}
-		if (umove(tcp, cur, &entry) < 0) {
-			tprintf("??? [%#lx]", cur);
-			break;
-		}
-		else
-			tprintf("%#08x", entry);
-	}
-	tprints("}");
+	printaddr(addr);
+	tprintf(", %lu, ", len);
+
+	unsigned int entry;
+	print_array(tcp, map, nmemb, &entry, sizeof(entry),
+		    umoven_or_printaddr, print_protmap_entry, 0);
 
 	return RVAL_DECODED;
 }
diff --git a/membarrier.c b/membarrier.c
index 485c62a..3bc5764 100644
--- a/membarrier.c
+++ b/membarrier.c
@@ -43,6 +43,7 @@
 	if (syserror(tcp) || !tcp->u_rval)
 		return 0;
 
-	tcp->auxstr = sprintflags("", membarrier_cmds, tcp->u_rval);
+	tcp->auxstr = sprintflags("", membarrier_cmds,
+				  (unsigned long) tcp->u_rval);
 	return RVAL_HEX | RVAL_STR;
 }
diff --git a/mount.c b/mount.c
index 84e79d6..1ae445d 100644
--- a/mount.c
+++ b/mount.c
@@ -74,7 +74,7 @@
 			tprints("|");
 	}
 	if (flags || !old_magic)
-		printflags(mount_flags, flags, "MS_???");
+		printflags_long(mount_flags, flags, "MS_???");
 	tprints(", ");
 
 	if (ignore_data)
diff --git a/mpers_type.h b/mpers_type.h
index adbefd5..4ce569b 100644
--- a/mpers_type.h
+++ b/mpers_type.h
@@ -39,5 +39,9 @@
 #else
 # define MPERS_PREFIX
 # define DEF_MPERS_TYPE(args) "empty.h"
-# define MPERS_DEFS "native_defs.h"
+# if IN_MPERS_BOOTSTRAP
+#  define MPERS_DEFS "empty.h"
+# else
+#  define MPERS_DEFS "native_defs.h"
+# endif
 #endif
diff --git a/mpers_xlat.h b/mpers_xlat.h
new file mode 100644
index 0000000..266faec
--- /dev/null
+++ b/mpers_xlat.h
@@ -0,0 +1,77 @@
+extern const struct xlat blkpg_ops[];
+extern const struct xlat btrfs_balance_args[];
+extern const struct xlat btrfs_balance_ctl_cmds[];
+extern const struct xlat btrfs_balance_flags[];
+extern const struct xlat btrfs_balance_state[];
+extern const struct xlat btrfs_compress_types[];
+extern const struct xlat btrfs_defrag_flags[];
+extern const struct xlat btrfs_dev_replace_cmds[];
+extern const struct xlat btrfs_dev_replace_results[];
+extern const struct xlat btrfs_dev_replace_state[];
+extern const struct xlat btrfs_dev_stats_flags[];
+extern const struct xlat btrfs_dev_stats_values[];
+extern const struct xlat btrfs_features_compat[];
+extern const struct xlat btrfs_features_compat_ro[];
+extern const struct xlat btrfs_features_incompat[];
+extern const struct xlat btrfs_key_types[];
+extern const struct xlat btrfs_qgroup_ctl_cmds[];
+extern const struct xlat btrfs_qgroup_inherit_flags[];
+extern const struct xlat btrfs_qgroup_limit_flags[];
+extern const struct xlat btrfs_qgroup_status_flags[];
+extern const struct xlat btrfs_scrub_flags[];
+extern const struct xlat btrfs_send_flags[];
+extern const struct xlat btrfs_snap_flags_v2[];
+extern const struct xlat btrfs_space_info_flags[];
+extern const struct xlat btrfs_tree_objectids[];
+extern const struct xlat evdev_autorepeat[];
+extern const struct xlat evdev_ff_status[];
+extern const struct xlat evdev_ff_types[];
+extern const struct xlat evdev_keycode[];
+extern const struct xlat evdev_leds[];
+extern const struct xlat evdev_misc[];
+extern const struct xlat evdev_mtslots[];
+extern const struct xlat evdev_prop[];
+extern const struct xlat evdev_relative_axes[];
+extern const struct xlat evdev_snd[];
+extern const struct xlat evdev_switch[];
+extern const struct xlat evdev_sync[];
+extern const struct xlat msgctl_flags[];
+extern const struct xlat shmctl_flags[];
+extern const struct xlat mtd_mode_options[];
+extern const struct xlat mtd_file_mode_options[];
+extern const struct xlat mtd_type_options[];
+extern const struct xlat mtd_flags_options[];
+extern const struct xlat mtd_otp_options[];
+extern const struct xlat mtd_nandecc_options[];
+extern const struct xlat sigev_value[];
+extern const struct xlat adjtimex_modes[];
+extern const struct xlat adjtimex_status[];
+extern const struct xlat audit_arch[];
+extern const struct xlat sigbus_codes[];
+extern const struct xlat sigchld_codes[];
+extern const struct xlat sigfpe_codes[];
+extern const struct xlat sigill_codes[];
+extern const struct xlat siginfo_codes[];
+extern const struct xlat sigpoll_codes[];
+extern const struct xlat sigprof_codes[];
+extern const struct xlat sigsegv_codes[];
+extern const struct xlat sigsys_codes[];
+extern const struct xlat sigtrap_codes[];
+extern const struct xlat sigemt_codes[];
+extern const struct xlat sigaltstack_flags[];
+extern const struct xlat v4l2_device_capabilities_flags[];
+extern const struct xlat v4l2_buf_types[];
+extern const struct xlat v4l2_format_description_flags[];
+extern const struct xlat v4l2_fields[];
+extern const struct xlat v4l2_colorspaces[];
+extern const struct xlat v4l2_memories[];
+extern const struct xlat v4l2_buf_flags[];
+extern const struct xlat v4l2_streaming_capabilities[];
+extern const struct xlat v4l2_capture_modes[];
+extern const struct xlat v4l2_input_types[];
+extern const struct xlat v4l2_control_ids[];
+extern const struct xlat v4l2_control_types[];
+extern const struct xlat v4l2_control_flags[];
+extern const struct xlat v4l2_control_classes[];
+extern const struct xlat v4l2_framesize_types[];
+extern const struct xlat v4l2_frameinterval_types[];
diff --git a/mtd.c b/mtd.c
index 2502536..52714ae 100644
--- a/mtd.c
+++ b/mtd.c
@@ -26,6 +26,8 @@
 
 #include "defs.h"
 
+#include DEF_MPERS_TYPE(struct_mtd_oob_buf)
+
 #include <linux/ioctl.h>
 
 /* The mtd api changes quickly, so we have to keep a local copy */
@@ -35,11 +37,10 @@
 #else
 # include <mtd/mtd-abi.h>
 #endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0)
-# include "ubi-user.h"
-#else
-# include <mtd/ubi-user.h>
-#endif
+
+typedef struct mtd_oob_buf struct_mtd_oob_buf;
+
+#include MPERS_DEFS
 
 #include "xlat/mtd_mode_options.h"
 #include "xlat/mtd_file_mode_options.h"
@@ -48,136 +49,242 @@
 #include "xlat/mtd_otp_options.h"
 #include "xlat/mtd_nandecc_options.h"
 
-int
-mtd_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
+static void
+decode_erase_info_user(struct tcb *tcp, const long addr)
 {
-	if (!verbose(tcp))
-		return RVAL_DECODED;
+	struct erase_info_user einfo;
 
+	tprints(", ");
+	if (umove_or_printaddr(tcp, addr, &einfo))
+		return;
+
+	tprintf("{start=%#x, length=%#x}", einfo.start, einfo.length);
+}
+
+static void
+decode_erase_info_user64(struct tcb *tcp, const long addr)
+{
+	struct erase_info_user64 einfo64;
+
+	tprints(", ");
+	if (umove_or_printaddr(tcp, addr, &einfo64))
+		return;
+
+	tprintf("{start=%#" PRIx64 ", length=%#" PRIx64 "}",
+		(uint64_t) einfo64.start, (uint64_t) einfo64.length);
+}
+
+static void
+decode_mtd_oob_buf(struct tcb *tcp, const long addr)
+{
+	struct_mtd_oob_buf mbuf;
+
+	tprints(", ");
+	if (umove_or_printaddr(tcp, addr, &mbuf))
+		return;
+
+	tprintf("{start=%#x, length=%#x, ptr=%#lx}",
+		mbuf.start, mbuf.length, (unsigned long) mbuf.ptr);
+}
+
+static void
+decode_mtd_oob_buf64(struct tcb *tcp, const long addr)
+{
+	struct mtd_oob_buf64 mbuf64;
+
+	tprints(", ");
+	if (umove_or_printaddr(tcp, addr, &mbuf64))
+		return;
+
+	tprintf("{start=%#" PRIx64 ", length=%#x, usr_ptr=%#" PRIx64 "}",
+		(uint64_t) mbuf64.start, mbuf64.length,
+		(uint64_t) mbuf64.usr_ptr);
+}
+
+static void
+decode_otp_info(struct tcb *tcp, const long addr)
+{
+	struct otp_info oinfo;
+
+	tprints(", ");
+	if (umove_or_printaddr(tcp, addr, &oinfo))
+		return;
+
+	tprintf("{start=%#x, length=%#x, locked=%u}",
+		oinfo.start, oinfo.length, oinfo.locked);
+}
+
+static void
+decode_otp_select(struct tcb *tcp, const long addr)
+{
+	unsigned int i;
+
+	tprints(", ");
+	if (umove_or_printaddr(tcp, addr, &i))
+		return;
+
+	tprints("[");
+	printxval(mtd_otp_options, i, "MTD_OTP_???");
+	tprints("]");
+}
+
+static void
+decode_mtd_write_req(struct tcb *tcp, const long addr)
+{
+	struct mtd_write_req mreq;
+
+	tprints(", ");
+	if (umove_or_printaddr(tcp, addr, &mreq))
+		return;
+
+	tprintf("{start=%#" PRIx64 ", len=%#" PRIx64
+		", ooblen=%#" PRIx64 ", usr_data=%#" PRIx64
+		", usr_oob=%#" PRIx64 ", mode=",
+		(uint64_t) mreq.start, (uint64_t) mreq.len,
+		(uint64_t) mreq.ooblen, (uint64_t) mreq.usr_data,
+		(uint64_t) mreq.usr_oob);
+	printxval(mtd_mode_options, mreq.mode, "MTD_OPS_???");
+	tprints("}");
+}
+
+static void
+decode_mtd_info_user(struct tcb *tcp, const long addr)
+{
+	struct mtd_info_user minfo;
+
+	tprints(", ");
+	if (umove_or_printaddr(tcp, addr, &minfo))
+		return;
+
+	tprints("{type=");
+	printxval(mtd_type_options, minfo.type, "MTD_???");
+	tprints(", flags=");
+	printflags(mtd_flags_options, minfo.flags, "MTD_???");
+	tprintf(", size=%#x, erasesize=%#x, writesize=%#x, oobsize=%#x"
+		", padding=%#" PRIx64 "}",
+		minfo.size, minfo.erasesize, minfo.writesize, minfo.oobsize,
+		(uint64_t) minfo.padding);
+}
+
+static void
+decode_nand_oobinfo(struct tcb *tcp, const long addr)
+{
+	struct nand_oobinfo ninfo;
+	unsigned int i, j;
+
+	tprints(", ");
+	if (umove_or_printaddr(tcp, addr, &ninfo))
+		return;
+
+	tprints("{useecc=");
+	printxval(mtd_nandecc_options, ninfo.useecc, "MTD_NANDECC_???");
+	tprintf(", eccbytes=%#x", ninfo.eccbytes);
+
+	tprints(", oobfree={");
+	for (i = 0; i < ARRAY_SIZE(ninfo.oobfree); ++i) {
+		if (i)
+			tprints("}, ");
+		tprints("{");
+		for (j = 0; j < ARRAY_SIZE(ninfo.oobfree[0]); ++j) {
+			if (j)
+				tprints(", ");
+			tprintf("%#x", ninfo.oobfree[i][j]);
+		}
+	}
+
+	tprints("}}, eccpos={");
+	for (i = 0; i < ARRAY_SIZE(ninfo.eccpos); ++i) {
+		if (i)
+			tprints(", ");
+		tprintf("%#x", ninfo.eccpos[i]);
+	}
+
+	tprints("}");
+}
+
+static void
+decode_nand_ecclayout_user(struct tcb *tcp, const long addr)
+{
+	struct nand_ecclayout_user nlay;
+	unsigned int i;
+
+	tprints(", ");
+	if (umove_or_printaddr(tcp, addr, &nlay))
+		return;
+
+	tprintf("{eccbytes=%#x, eccpos={", nlay.eccbytes);
+	for (i = 0; i < ARRAY_SIZE(nlay.eccpos); ++i) {
+		if (i)
+			tprints(", ");
+		tprintf("%#x", nlay.eccpos[i]);
+	}
+	tprintf("}, oobavail=%#x, oobfree={", nlay.oobavail);
+	for (i = 0; i < ARRAY_SIZE(nlay.oobfree); ++i) {
+		if (i)
+			tprints(", ");
+		tprintf("{offset=%#x, length=%#x}",
+			nlay.oobfree[i].offset, nlay.oobfree[i].length);
+	}
+	tprints("}");
+}
+
+static void
+decode_mtd_ecc_stats(struct tcb *tcp, const long addr)
+{
+	struct mtd_ecc_stats es;
+
+	tprints(", ");
+	if (umove_or_printaddr(tcp, addr, &es))
+		return;
+
+	tprintf("{corrected=%#x, failed=%#x, badblocks=%#x, bbtblocks=%#x}",
+		es.corrected, es.failed, es.badblocks, es.bbtblocks);
+}
+
+MPERS_PRINTER_DECL(int, mtd_ioctl, struct tcb *tcp,
+		   const unsigned int code, const long arg)
+{
 	switch (code) {
 	case MEMERASE:
 	case MEMLOCK:
 	case MEMUNLOCK:
-	case MEMISLOCKED: {
-		struct erase_info_user einfo;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &einfo))
-			break;
-
-		tprintf("{start=%#" PRIx32 ", length=%#" PRIx32 "}",
-			einfo.start, einfo.length);
+	case MEMISLOCKED:
+		decode_erase_info_user(tcp, arg);
 		break;
-	}
 
-	case MEMERASE64: {
-		struct erase_info_user64 einfo64;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &einfo64))
-			break;
-
-		tprintf("{start=%#" PRIx64 ", length=%#" PRIx64 "}",
-			(uint64_t) einfo64.start, (uint64_t) einfo64.length);
+	case MEMERASE64:
+		decode_erase_info_user64(tcp, arg);
 		break;
-	}
 
 	case MEMWRITEOOB:
-	case MEMREADOOB: {
-		struct mtd_oob_buf mbuf;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &mbuf))
-			break;
-
-		tprintf("{start=%#" PRIx32 ", length=%#" PRIx32 ", ptr=...}",
-			mbuf.start, mbuf.length);
+	case MEMREADOOB:
+		decode_mtd_oob_buf(tcp, arg);
 		break;
-	}
 
 	case MEMWRITEOOB64:
-	case MEMREADOOB64: {
-		struct mtd_oob_buf64 mbuf64;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &mbuf64))
-			break;
-
-		tprintf("{start=%#" PRIx64 ", length=%#" PRIx64 ", ptr=...}",
-			(uint64_t) mbuf64.start, (uint64_t) mbuf64.length);
+	case MEMREADOOB64:
+		decode_mtd_oob_buf64(tcp, arg);
 		break;
-	}
 
-	case MEMGETREGIONINFO: {
-		struct region_info_user rinfo;
-
-		if (entering(tcp)) {
-			tprints(", ");
-			if (umove_or_printaddr(tcp, arg, &rinfo))
-				break;
-			tprintf("{regionindex=%#x", rinfo.regionindex);
-			return 1;
-		} else {
-			if (syserror(tcp)) {
-				tprints("}");
-				break;
-			}
-			if (umove(tcp, arg, &rinfo) < 0) {
-				tprints(", ???}");
-				break;
-			}
-			tprintf(", offset=%#x, erasesize=%#x, numblocks=%#x}",
-				rinfo.offset, rinfo.erasesize, rinfo.numblocks);
-			break;
-		}
-	}
-
-	case OTPLOCK: {
-		struct otp_info oinfo;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &oinfo))
-			break;
-
-		tprintf("{start=%#" PRIx32 ", length=%#" PRIx32 ", locked=%" PRIu32 "}",
-			oinfo.start, oinfo.length, oinfo.locked);
+	case MEMWRITE:
+		decode_mtd_write_req(tcp, arg);
 		break;
-	}
 
-	case MEMWRITE: {
-		struct mtd_write_req mreq;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &mreq))
-			break;
-
-		tprintf("{start=%#" PRIx64 ", len=%#" PRIx64,
-			(uint64_t) mreq.start, (uint64_t) mreq.len);
-		tprintf(", ooblen=%#" PRIx64 ", usr_data=%#" PRIx64,
-			(uint64_t) mreq.ooblen, (uint64_t) mreq.usr_data);
-		tprintf(", usr_oob=%#" PRIx64 ", mode=",
-			(uint64_t) mreq.usr_oob);
-		printxval(mtd_mode_options, mreq.mode, "MTD_OPS_???");
-		tprints(", padding=...}");
+	case OTPGETREGIONINFO:
+		if (entering(tcp))
+			return 0;
+		/* fall through */
+	case OTPLOCK:
+		decode_otp_info(tcp, arg);
 		break;
-	}
 
-	case OTPSELECT: {
-		unsigned int i;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &i))
-			break;
-
-		tprints("[");
-		printxval(mtd_otp_options, i, "MTD_OTP_???");
-		tprints("]");
+	case OTPSELECT:
+		decode_otp_select(tcp, arg);
 		break;
-	}
 
 	case MTDFILEMODE:
 		tprints(", ");
-		printxval(mtd_file_mode_options, arg, "MTD_FILE_MODE_???");
+		printxval_long(mtd_file_mode_options, arg, "MTD_FILE_MODE_???");
 		break;
 
 	case MEMGETBADBLOCK:
@@ -186,133 +293,33 @@
 		printnum_int64(tcp, arg, "%" PRIu64);
 		break;
 
-	case MEMGETINFO: {
-		struct mtd_info_user minfo;
-
+	case MEMGETINFO:
 		if (entering(tcp))
 			return 0;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &minfo))
-			break;
-
-		tprints("{type=");
-		printxval(mtd_type_options, minfo.type, "MTD_???");
-		tprints(", flags=");
-		printflags(mtd_flags_options, minfo.flags, "MTD_???");
-		tprintf(", size=%#" PRIx32 ", erasesize=%#" PRIx32,
-			minfo.size, minfo.erasesize);
-		tprintf(", writesize=%#" PRIx32 ", oobsize=%#" PRIx32,
-			minfo.writesize, minfo.oobsize);
-		tprintf(", padding=%#" PRIx64 "}",
-			(uint64_t) minfo.padding);
+		decode_mtd_info_user(tcp, arg);
 		break;
-	}
 
-	case MEMGETOOBSEL: {
-		struct nand_oobinfo ninfo;
-		unsigned int i;
-
+	case MEMGETOOBSEL:
 		if (entering(tcp))
 			return 0;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &ninfo))
-			break;
-
-		tprints("{useecc=");
-		printxval(mtd_nandecc_options, ninfo.useecc, "MTD_NANDECC_???");
-		tprintf(", eccbytes=%#" PRIx32, ninfo.eccbytes);
-
-		tprints(", oobfree={");
-		for (i = 0; i < ARRAY_SIZE(ninfo.oobfree); ++i) {
-			unsigned int j;
-
-			if (i)
-				tprints("}, ");
-			tprints("{");
-			for (j = 0; j < ARRAY_SIZE(ninfo.oobfree[0]); ++j) {
-				if (j)
-					tprints(", ");
-				tprintf("%#" PRIx32, ninfo.oobfree[i][j]);
-			}
-		}
-
-		tprints("}}, eccpos={");
-		for (i = 0; i < ARRAY_SIZE(ninfo.eccpos); ++i) {
-			if (i)
-				tprints(", ");
-			tprintf("%#" PRIx32, ninfo.eccpos[i]);
-		}
-
-		tprints("}");
+		decode_nand_oobinfo(tcp, arg);
 		break;
-	}
 
-	case OTPGETREGIONINFO: {
-		struct otp_info oinfo;
-
+	case ECCGETLAYOUT:
 		if (entering(tcp))
 			return 0;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &oinfo))
-			break;
-
-		tprintf("{start=%#" PRIx32 ", length=%#" PRIx32 ", locked=%" PRIu32 "}",
-			oinfo.start, oinfo.length, oinfo.locked);
+		decode_nand_ecclayout_user(tcp, arg);
 		break;
-	}
 
-	case ECCGETLAYOUT: {
-		struct nand_ecclayout_user nlay;
-		unsigned int i;
-
+	case ECCGETSTATS:
 		if (entering(tcp))
 			return 0;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &nlay))
-			break;
-
-		tprintf("{eccbytes=%#" PRIx32 ", eccpos={", nlay.eccbytes);
-		for (i = 0; i < ARRAY_SIZE(nlay.eccpos); ++i) {
-			if (i)
-				tprints(", ");
-			tprintf("%#" PRIx32, nlay.eccpos[i]);
-		}
-		tprintf("}, oobavail=%#" PRIx32 ", oobfree={", nlay.oobavail);
-		for (i = 0; i < ARRAY_SIZE(nlay.oobfree); ++i) {
-			if (i)
-				tprints(", ");
-			tprintf("{offset=%#" PRIx32 ", length=%#" PRIx32 "}",
-				nlay.oobfree[i].offset, nlay.oobfree[i].length);
-		}
-		tprints("}");
+		decode_mtd_ecc_stats(tcp, arg);
 		break;
-	}
-
-	case ECCGETSTATS: {
-		struct mtd_ecc_stats estat;
-
-		if (entering(tcp))
-			return 0;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &estat))
-			break;
-
-		tprintf("{corrected=%#" PRIx32 ", failed=%#" PRIx32,
-			estat.corrected, estat.failed);
-		tprintf(", badblocks=%#" PRIx32 ", bbtblocks=%#" PRIx32 "}",
-			estat.badblocks, estat.bbtblocks);
-		break;
-	}
 
 	case OTPGETREGIONCOUNT:
 		if (entering(tcp))
 			return 0;
-
 		tprints(", ");
 		printnum_int(tcp, arg, "%u");
 		break;
@@ -320,173 +327,32 @@
 	case MEMGETREGIONCOUNT:
 		if (entering(tcp))
 			return 0;
-
 		tprints(", ");
 		printnum_int(tcp, arg, "%d");
 		break;
 
-	default:
-		return RVAL_DECODED;
-	}
-
-	return RVAL_DECODED | 1;
-}
-
-#include "xlat/ubi_volume_types.h"
-#include "xlat/ubi_volume_props.h"
-
-int
-ubi_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
-{
-	if (!verbose(tcp))
-		return RVAL_DECODED;
-
-	switch (code) {
-	case UBI_IOCMKVOL:
+	case MEMGETREGIONINFO:
 		if (entering(tcp)) {
-			struct ubi_mkvol_req mkvol;
+			struct region_info_user rinfo;
 
 			tprints(", ");
-			if (umove_or_printaddr(tcp, arg, &mkvol))
+			if (umove_or_printaddr(tcp, arg, &rinfo))
 				break;
+			tprintf("{regionindex=%#x", rinfo.regionindex);
+			return 0;
+		} else {
+			struct region_info_user rinfo;
 
-			tprintf("{vol_id=%" PRIi32 ", alignment=%" PRIi32
-				", bytes=%" PRIi64 ", vol_type=", mkvol.vol_id,
-				mkvol.alignment, (int64_t)mkvol.bytes);
-			printxval(ubi_volume_types, mkvol.vol_type, "UBI_???_VOLUME");
-			tprintf(", name_len=%" PRIi16 ", name=", mkvol.name_len);
-			if (print_quoted_string(mkvol.name,
-					CLAMP(mkvol.name_len, 0, UBI_MAX_VOLUME_NAME),
-					QUOTE_0_TERMINATED) > 0) {
-				tprints("...");
-			}
+			if (!syserror(tcp) && !umove(tcp, arg, &rinfo))
+				tprintf(", offset=%#x"
+					", erasesize=%#x"
+					", numblocks=%#x}",
+					rinfo.offset,
+					rinfo.erasesize,
+					rinfo.numblocks);
 			tprints("}");
-			return 1;
-		}
-		if (!syserror(tcp)) {
-			tprints(" => ");
-			printnum_int(tcp, arg, "%d");
-		}
-		break;
-
-	case UBI_IOCRSVOL: {
-		struct ubi_rsvol_req rsvol;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &rsvol))
 			break;
-
-		tprintf("{vol_id=%" PRIi32 ", bytes=%" PRIi64 "}",
-			rsvol.vol_id, (int64_t)rsvol.bytes);
-		break;
-	}
-
-	case UBI_IOCRNVOL: {
-		struct ubi_rnvol_req rnvol;
-		int c;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &rnvol))
-			break;
-
-		tprintf("{count=%" PRIi32 ", ents=[", rnvol.count);
-		for (c = 0; c < CLAMP(rnvol.count, 0, UBI_MAX_RNVOL); ++c) {
-			if (c)
-				tprints(", ");
-			tprintf("{vol_id=%" PRIi32 ", name_len=%" PRIi16
-				", name=", rnvol.ents[c].vol_id,
-				rnvol.ents[c].name_len);
-			if (print_quoted_string(rnvol.ents[c].name,
-					CLAMP(rnvol.ents[c].name_len, 0, UBI_MAX_VOLUME_NAME),
-					QUOTE_0_TERMINATED) > 0) {
-				tprints("...");
-			}
-			tprints("}");
 		}
-		tprints("]}");
-		break;
-	}
-
-	case UBI_IOCEBCH: {
-		struct ubi_leb_change_req leb;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &leb))
-			break;
-
-		tprintf("{lnum=%d, bytes=%d}", leb.lnum, leb.bytes);
-		break;
-	}
-
-	case UBI_IOCATT:
-		if (entering(tcp)) {
-			struct ubi_attach_req attach;
-
-			tprints(", ");
-			if (umove_or_printaddr(tcp, arg, &attach))
-				break;
-
-			tprintf("{ubi_num=%" PRIi32 ", mtd_num=%" PRIi32
-				", vid_hdr_offset=%" PRIi32
-				", max_beb_per1024=%" PRIi16 "}",
-				attach.ubi_num, attach.mtd_num,
-				attach.vid_hdr_offset, attach.max_beb_per1024);
-			return 1;
-		}
-		if (!syserror(tcp)) {
-			tprints(" => ");
-			printnum_int(tcp, arg, "%d");
-		}
-		break;
-
-	case UBI_IOCEBMAP: {
-		struct ubi_map_req map;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &map))
-			break;
-
-		tprintf("{lnum=%" PRIi32 ", dtype=%" PRIi8 "}",
-			map.lnum, map.dtype);
-		break;
-	}
-
-	case UBI_IOCSETVOLPROP: {
-		struct ubi_set_vol_prop_req prop;
-
-		tprints(", ");
-		if (umove_or_printaddr(tcp, arg, &prop))
-			break;
-
-		tprints("{property=");
-		printxval(ubi_volume_props, prop.property, "UBI_VOL_PROP_???");
-		tprintf(", value=%#" PRIx64 "}", (uint64_t)prop.value);
-		break;
-	}
-
-
-	case UBI_IOCVOLUP:
-		tprints(", ");
-		printnum_int64(tcp, arg, "%" PRIi64);
-		break;
-
-	case UBI_IOCDET:
-	case UBI_IOCEBER:
-	case UBI_IOCEBISMAP:
-	case UBI_IOCEBUNMAP:
-	case UBI_IOCRMVOL:
-		tprints(", ");
-		printnum_int(tcp, arg, "%d");
-		break;
-
-#ifdef UBI_IOCVOLCRBLK
-	case UBI_IOCVOLCRBLK:
-#endif
-#ifdef UBI_IOCVOLRMBLK
-	case UBI_IOCVOLRMBLK:
-#endif
-		/* no arguments */
-		break;
 
 	default:
 		return RVAL_DECODED;
diff --git a/mx32_funcs.h b/mx32_funcs.h
new file mode 100644
index 0000000..9cea9ad
--- /dev/null
+++ b/mx32_funcs.h
@@ -0,0 +1,19 @@
+#undef sys_readdir
+#define sys_readdir mx32_sys_readdir
+#undef sys_getdents
+#define sys_getdents mx32_sys_getdents
+#undef sys_msgctl
+#define sys_msgctl mx32_sys_msgctl
+#undef sys_shmctl
+#define sys_shmctl mx32_sys_shmctl
+#undef sys_time
+#define sys_time mx32_sys_time
+#undef sys_sigaltstack
+#define sys_sigaltstack mx32_sys_sigaltstack
+#undef sys_sysinfo
+#define sys_sysinfo mx32_sys_sysinfo
+#undef sys_times
+#define sys_times mx32_sys_times
+#undef sys_utime
+#define sys_utime mx32_sys_utime
+#include "sys_func.h"
diff --git a/mx32_printer_decls.h b/mx32_printer_decls.h
new file mode 100644
index 0000000..cb6409f
--- /dev/null
+++ b/mx32_printer_decls.h
@@ -0,0 +1,28 @@
+/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sigaltstack.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
+extern int mx32_block_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
+extern int mx32_btrfs_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
+extern int mx32_evdev_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
+extern _Bool mx32_fetch_seccomp_fprog(struct tcb *tcp, const long addr, void *p);
+extern _Bool mx32_fetch_struct_flock(struct tcb *tcp, const long addr, void *p);
+extern _Bool mx32_fetch_struct_flock64(struct tcb *tcp, const long addr, void *p);
+extern _Bool mx32_fetch_struct_statfs(struct tcb *tcp, const long addr, struct strace_statfs *p);
+extern _Bool mx32_fetch_struct_statfs64(struct tcb *tcp, const long addr, const unsigned long size, struct strace_statfs *p);
+extern int mx32_hdio_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
+extern int mx32_mtd_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
+extern void mx32_printmqattr(struct tcb *tcp, const long addr);
+extern void mx32_tprint_msgbuf(struct tcb *tcp, const long addr, const unsigned long count);
+extern void mx32_print_sigevent(struct tcb *tcp, const long addr);
+extern void mx32_print_timespec(struct tcb *tcp, const long addr);
+extern const char * mx32_sprint_timespec(struct tcb *tcp, const long addr);
+extern void mx32_print_timespec_utime_pair(struct tcb *tcp, const long addr);
+extern void mx32_print_itimerspec(struct tcb *tcp, const long addr);
+extern void mx32_print_timeval(struct tcb *tcp, const long addr);
+extern void mx32_print_timeval_pair(struct tcb *tcp, const long addr);
+extern const char * mx32_sprint_timeval(struct tcb *tcp, const long addr);
+extern void mx32_print_itimerval(struct tcb *tcp, const long addr);
+extern int mx32_print_timex(struct tcb *tcp, const long addr);
+extern void mx32_printrusage(struct tcb *tcp, long addr);
+extern void mx32_printsiginfo_at(struct tcb *tcp, long addr);
+extern void mx32_print_siginfo_array(struct tcb *tcp, unsigned long addr, unsigned long len);
+extern int mx32_rtc_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
+extern int mx32_v4l2_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
diff --git a/mx32_printer_defs.h b/mx32_printer_defs.h
new file mode 100644
index 0000000..07228ed
--- /dev/null
+++ b/mx32_printer_defs.h
@@ -0,0 +1,28 @@
+/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sigaltstack.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
+.block_ioctl = mx32_block_ioctl,
+.btrfs_ioctl = mx32_btrfs_ioctl,
+.evdev_ioctl = mx32_evdev_ioctl,
+.fetch_seccomp_fprog = mx32_fetch_seccomp_fprog,
+.fetch_struct_flock = mx32_fetch_struct_flock,
+.fetch_struct_flock64 = mx32_fetch_struct_flock64,
+.fetch_struct_statfs = mx32_fetch_struct_statfs,
+.fetch_struct_statfs64 = mx32_fetch_struct_statfs64,
+.hdio_ioctl = mx32_hdio_ioctl,
+.mtd_ioctl = mx32_mtd_ioctl,
+.printmqattr = mx32_printmqattr,
+.tprint_msgbuf = mx32_tprint_msgbuf,
+.print_sigevent = mx32_print_sigevent,
+.print_timespec = mx32_print_timespec,
+.sprint_timespec = mx32_sprint_timespec,
+.print_timespec_utime_pair = mx32_print_timespec_utime_pair,
+.print_itimerspec = mx32_print_itimerspec,
+.print_timeval = mx32_print_timeval,
+.print_timeval_pair = mx32_print_timeval_pair,
+.sprint_timeval = mx32_sprint_timeval,
+.print_itimerval = mx32_print_itimerval,
+.print_timex = mx32_print_timex,
+.printrusage = mx32_printrusage,
+.printsiginfo_at = mx32_printsiginfo_at,
+.print_siginfo_array = mx32_print_siginfo_array,
+.rtc_ioctl = mx32_rtc_ioctl,
+.v4l2_ioctl = mx32_v4l2_ioctl,
diff --git a/mx32_type_defs.h b/mx32_type_defs.h
new file mode 100644
index 0000000..088219f
--- /dev/null
+++ b/mx32_type_defs.h
@@ -0,0 +1,121 @@
+#ifdef MPERS_mx32_struct_blk_user_trace_setup
+# define struct_blk_user_trace_setup MPERS_mx32_struct_blk_user_trace_setup
+#endif
+#ifdef MPERS_mx32_struct_blkpg_ioctl_arg
+# define struct_blkpg_ioctl_arg MPERS_mx32_struct_blkpg_ioctl_arg
+#endif
+#ifdef MPERS_mx32_struct_blkpg_partition
+# define struct_blkpg_partition MPERS_mx32_struct_blkpg_partition
+#endif
+#ifdef MPERS_mx32_struct_btrfs_ioctl_dev_replace_args
+# define struct_btrfs_ioctl_dev_replace_args MPERS_mx32_struct_btrfs_ioctl_dev_replace_args
+#endif
+#ifdef MPERS_mx32_struct_btrfs_ioctl_send_args
+# define struct_btrfs_ioctl_send_args MPERS_mx32_struct_btrfs_ioctl_send_args
+#endif
+#ifdef MPERS_mx32_struct_btrfs_ioctl_received_subvol_args
+# define struct_btrfs_ioctl_received_subvol_args MPERS_mx32_struct_btrfs_ioctl_received_subvol_args
+#endif
+#ifdef MPERS_mx32_kernel_dirent
+# define kernel_dirent MPERS_mx32_kernel_dirent
+#endif
+#ifdef MPERS_mx32_struct_ff_effect
+# define struct_ff_effect MPERS_mx32_struct_ff_effect
+#endif
+#ifdef MPERS_mx32_seccomp_fprog_t
+# define seccomp_fprog_t MPERS_mx32_seccomp_fprog_t
+#endif
+#ifdef MPERS_mx32_struct_flock
+# define struct_flock MPERS_mx32_struct_flock
+#endif
+#ifdef MPERS_mx32_struct_flock64
+# define struct_flock64 MPERS_mx32_struct_flock64
+#endif
+#ifdef MPERS_mx32_struct_statfs
+# define struct_statfs MPERS_mx32_struct_statfs
+#endif
+#ifdef MPERS_mx32_struct_statfs64
+# define struct_statfs64 MPERS_mx32_struct_statfs64
+#endif
+#ifdef MPERS_mx32_struct_hd_geometry
+# define struct_hd_geometry MPERS_mx32_struct_hd_geometry
+#endif
+#ifdef MPERS_mx32_msqid_ds_t
+# define msqid_ds_t MPERS_mx32_msqid_ds_t
+#endif
+#ifdef MPERS_mx32_shmid_ds_t
+# define shmid_ds_t MPERS_mx32_shmid_ds_t
+#endif
+#ifdef MPERS_mx32_struct_mtd_oob_buf
+# define struct_mtd_oob_buf MPERS_mx32_struct_mtd_oob_buf
+#endif
+#ifdef MPERS_mx32_mq_attr_t
+# define mq_attr_t MPERS_mx32_mq_attr_t
+#endif
+#ifdef MPERS_mx32_msgbuf_t
+# define msgbuf_t MPERS_mx32_msgbuf_t
+#endif
+#ifdef MPERS_mx32_struct_sigevent
+# define struct_sigevent MPERS_mx32_struct_sigevent
+#endif
+#ifdef MPERS_mx32_time_t
+# define time_t MPERS_mx32_time_t
+#endif
+#ifdef MPERS_mx32_timespec_t
+# define timespec_t MPERS_mx32_timespec_t
+#endif
+#ifdef MPERS_mx32_timeval_t
+# define timeval_t MPERS_mx32_timeval_t
+#endif
+#ifdef MPERS_mx32_struct_timex
+# define struct_timex MPERS_mx32_struct_timex
+#endif
+#ifdef MPERS_mx32_rusage_t
+# define rusage_t MPERS_mx32_rusage_t
+#endif
+#ifdef MPERS_mx32_siginfo_t
+# define siginfo_t MPERS_mx32_siginfo_t
+#endif
+#ifdef MPERS_mx32_struct_rtc_pll_info
+# define struct_rtc_pll_info MPERS_mx32_struct_rtc_pll_info
+#endif
+#ifdef MPERS_mx32_stack_t
+# define stack_t MPERS_mx32_stack_t
+#endif
+#ifdef MPERS_mx32_sysinfo_t
+# define sysinfo_t MPERS_mx32_sysinfo_t
+#endif
+#ifdef MPERS_mx32_tms_t
+# define tms_t MPERS_mx32_tms_t
+#endif
+#ifdef MPERS_mx32_utimbuf_t
+# define utimbuf_t MPERS_mx32_utimbuf_t
+#endif
+#ifdef MPERS_mx32_struct_v4l2_buffer
+# define struct_v4l2_buffer MPERS_mx32_struct_v4l2_buffer
+#endif
+#ifdef MPERS_mx32_struct_v4l2_create_buffers
+# define struct_v4l2_create_buffers MPERS_mx32_struct_v4l2_create_buffers
+#endif
+#ifdef MPERS_mx32_struct_v4l2_ext_control
+# define struct_v4l2_ext_control MPERS_mx32_struct_v4l2_ext_control
+#endif
+#ifdef MPERS_mx32_s